first commit

This commit is contained in:
lihansani
2026-07-13 15:37:05 +08:00
commit 8b11aa2efc
299 changed files with 206339 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
127.0.0.1:10
172.16.0.70:8081

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
ffd8ffe000104a46494600010101006000600000ffdb004300100b0c0e0c0a100e0d0e1211101318281a181616183123251d283a333d3c3933383740485c4e404457453738506d51575f626768673e4d71797064785c656763ffdb0043011112121815182f1a1a2f634238426363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363ffc000110800a9006403012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00d9a70a4a5ab10b4514b4c04a2968a0414b494b4005145140051451400514514011d028a5a431452d252d300a28a5a004a5a28a04145145001451450014514500474b4da75218a29452514c05a28a280168a4a5a04145251400b45251400b4514500474b4da5a918b4b482969805578aed5e77888c61b00fad58ac6b8631ddc8aa3ab66a27271348454ae6d5364916342edd05650bfb88f2a76b7a64722a296ea6b8e49181d062a1d78f41fb277d4d2b4b969a47570011c8c7a559cd64e94ccd3ca5ba81835a99ab84aeb526a46d2b21d9a334ccd381abb903a8a4a280194b494b4862d14945021d9ac7b828b772c8cc781c8f615af9ac6bf3e5dd3e1796c7cd9fd2b2adb1ad2dc820b88ae8b98490508ce47d698f7915bddac063662d8e476cff9cd0a8b69217440aa47cf8144686491a560371e54903207f315cda7637b17ad0aaddb614862307deb47359b6392d9c0c2f43577757452f84c2a6e4b9a729a881a78ad4cc933452514c068a5a4a280168cd2678e6a8dcdd338291b6d1ebeb532928a1c62d935cdf4506467738ec2b3a67dcbb9b9cf26a9e0b499c0fbc735336ec64638ed5cb2a8e474460a2446523e42bbd471d706a68a32fc05da9e99cd42593bf0d5760f9941cd45cb64f061176ad5807355236c1dbe9deaca9ae8a6f439e6b5255a916a35a916b6440f14500514086519a4cd266802bdf4a55020eadd6a9b11e59f6a748e649724e41e94d603cb3f4ae59cb999d11564545db9c004e4e4d5819f2fe65c7155119966e067d2acfef366777cc7f84d648d0acee9b812738e738ab50ce0a8e31e95525882827057fa9a580ee60074c5306692b67a5584aad18c0039fc6aca574c3639e4f5265a956a35152ad6a886385149453110d35cfc8df4a334c91808d89e80527b0d6e67c58d9f29c81de9b2b050707f4a588aa26380291981fc4d7133a8a864c4a8323e71eb4e78dda5016e063d076aab78a162f306708c0e3dbbd4d082c11a1451e841cd26343ee731821e4c8a86d22334f8c95451d4773516ad24c258d593258700558d321bbda19f6853fc34ec4dcd48942f03a0ab518aad1f5ab51d75c56873b7a93a8a78a6ad3c55922d1451408a99a8e6c985c0ebb4e29d9a4a4ca463f980af3d7de9158123355af898ae64518e0f1c5575bb72a598602f06b8ec75742fce1248d909192b8a874e00c5f32166538250f5a8639f7b7c913b67bd5ad2f89664da5307760d2481e826a6187d9e7c7dc621bdb35a5013e583ed54f50656b570392a412055ab6915e05c1eab4fb10c9e3ab51d558b8e2aca1aeb4739616a4151ad3c715421d452668a76028668cd333466a4b28cfa7a5d8f31dcab30ce47155d7c3ea7949b073dc66b5e1008191d00a970015c7ad64a29ea573332e2d2678d36f9b13f3d791fd0d247a75ea5eb4cde4942bb70ac73fa815a1f6c41f7a3917fde4228fb7dbffcf551f534724439e4574b6b904e62ce4ff7978fd6abdbe9f7d0b3b1119193b403d07e55ab1cf1cbfeadc37d29c6440705803e99a5ece21ceca71c72a201244e48eea0d384cea7989c7e9fcc55bdea7a30fce9c18ff78d68924ac43d48239dd8f1131ff3f4ab01c8197c20f7346f6f5348483d429fa8aab8b944fb5443fe5a29fa5146d8fbc719ff00808a28b8b94a5bb039350b5ec4bfc59e714973fea4d631ff00529f53fceb1a9371d8de1052dce92191190329041a716e57ebfd2a8e9fff001e8956c755fad5c5dd5ccdab3b108697276dd46dec53ff00af4e0f73d8c27fe047fc2b166ff8fa6ff7cff3ad28bee0a181760326f25e345e3ef29cd47385f358b5a16cff00cb450327f2e69d6df78fd2a76ea298140883f8a19c7bfcf406b61ff2f1220f761fd6af8a51d45003243fb8e25d9c0c3d43fbdfe1b943f55ffebd2ea3ff001e137d3fad62d97facfc68046d6eb8fefc67f1ff00eb5150af4a290ec7ffd9

View File

@@ -0,0 +1 @@
ffd8ffe000104a46494600010101006000600000ffdb004300100b0c0e0c0a100e0d0e1211101318281a181616183123251d283a333d3c3933383740485c4e404457453738506d51575f626768673e4d71797064785c656763ffdb0043011112121815182f1a1a2f634238426363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363ffc000110800a9006403012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00d9a70a4a5ab10b4514b4c04a2968a0414b494b4005145140051451400514514011d028a5a431452d252d300a28a5a004a5a28a04145145001451450014514500474b4da75218a29452514c05a28a280168a4a5a04145251400b45251400b4514500474b4da5a918b4b482969805578aed5e77888c61b00fad58ac6b8631ddc8aa3ab66a27271348454ae6d5364916342edd05650bfb88f2a76b7a64722a296ea6b8e49181d062a1d78f41fb277d4d2b4b969a47570011c8c7a559cd64e94ccd3ca5ba81835a99ab84aeb526a46d2b21d9a334ccd381abb903a8a4a280194b494b4862d14945021d9ac7b828b772c8cc781c8f615af9ac6bf3e5dd3e1796c7cd9fd2b2adb1ad2dc820b88ae8b98490508ce47d698f7915bddac063662d8e476cff9cd0a8b69217440aa47cf8144686491a560371e54903207f315cda7637b17ad0aaddb614862307deb47359b6392d9c0c2f43577757452f84c2a6e4b9a729a881a78ad4cc933452514c068a5a4a280168cd2678e6a8dcdd338291b6d1ebeb532928a1c62d935cdf4506467738ec281f0f00efffffff9fffffff8ff0000f7b3a67dcbb9b9cf26a9e0b499c0fbc735336ec64638ed5cb2a8e474460a2446523e42bbd471d706a68a32fc05da9e99cd42593bf0d5760f9941cd45cb64f061176ad5807355236c1dbe9deaca9ae8a6f439e6b5255a916a35a916b6440f14500514086519a4cd266802bdf4a55020eadd6a9b11e59f6a748e649724e41e94d603cb3f4ae59cb999d11564545db9c004e4e4d5819f2fe65c7155119966e067d2acfef366777cc7f84d648d0acee9b812738e738ab50ce0a8e31e95525882827057fa9a580ee60074c5306692b67a5584aad18c0039fc6aca574c3639e4f5265a956a35152ad6a886385149453110d35cfc8df4a334c91808d89e80527b0d6e67c58d9f29c81de9b2b050707f4a588aa26380291981fc4d7133a8a864c4a8323e71eb4e78dda5016e063d076aab78a162f306708c0e3dbbd4d082c11a1451e841cd26343ee731821e4c8a86d22334f8c95451d4773516ad24c258d593258700558d321bbda19f6853fc34ec4dcd48942f03a0ab518aad1f5ab51d75c56873b7a93a8a78a6ad3c55922d1451408a99a8e6c985c0ebb4e29d9a4a4ca463f980af3d7de9158123355af898ae64518e0f1c5575bb72a598602f06b8ec75742fce1248d909192b8a874e00c5f32166538250f5a8639f7b7c913b67bd5ad2f89664da5307760d2481e826a6187d9e7c7dc621bdb35a5013e583ed54f50656b570392a412055ab6915e05c1eab4fb10c9e3ab51d558b8e2aca1aeb4739616a4151ad3c715421d452668a76028668cd333466a4b28cfa7a5d8f31dcab30ce47155d7c3ea7949b073dc66b5e1008191d00a970015c7ad64a29ea573332e2d2678d36f9b13f3d791fd0d247a75ea5eb4cde4942bb70ac73fa815a1f6c41f7a3917fde4228fb7dbffcf551f534724439e4574b6b904e62ce4ff7978fd6abdbe9f7d0b3b1119193b403d07e55ab1cf1cbfeadc37d29c6440705803e99a5ece21ceca71c72a201244e48eea0d384cea7989c7e9fcc55bdea7a30fce9c18ff78d68924ac43d48239dd8f1131ff3f4ab01c8197c20f7346f6f5348483d429fa8aab8b944fb5443fe5a29fa5146d8fbc719ff00808a28b8b94a5bb039350b5ec4bfc59e714973fea4d631ff00529f53fceb1a9371d8de1052dce92191190329041a716e57ebfd2a8e9fff001e8956c755fad5c5dd5ccdab3b108697276dd46dec53ff00af4e0f73d8c27fe047fc2b166ff8fa6ff7cff3ad28bee0a181760326f25e345e3ef29cd47385f358b5a16cff00cb450327f2e69d6df78fd2a76ea298140883f8a19c7bfcf406b61ff2f1220f761fd6af8a51d45003243fb8e25d9c0c3d43fbdfe1b943f55ffebd2ea3ff001e137d3fad62d97facfc68046d6eb8fefc67f1ff00eb5150af4a290ec7ffd9000000000000000000000000000000000000000000000000001ae74609fffffff9fffffff8ff0000f7

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
with open("TCP_VDES报文消息.bin", "rb") as f:
data = f.read()
print(data.hex())
# 帧起始标志
delimiter = b"####"
# 按标志切分
frames = data.split(delimiter)
# 第一个切分出来的可能是空的(因为文件就是以 #### 开头)
for i, frame in enumerate(frames):
if not frame:
continue
# 打印时把起始标志加回去
ais_packet = delimiter + frame
print(f"Frame {i}:")
print((delimiter + frame).hex())
print("-" * 60)

View File

@@ -0,0 +1,2 @@
192.168.2.183:10
172.16.1.59:8081

View File

@@ -0,0 +1,246 @@
(['E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\终端转成都.py'],
['E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包'],
[],
['C:\\python\\Lib\\site-packages\\numpy\\_pyinstaller',
'C:\\python\\lib\\site-packages\\playwright\\_impl\\__pyinstaller',
'C:\\python\\lib\\site-packages\\pygame\\__pyinstaller',
'C:\\python\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks',
'C:\\python\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks'],
{},
[],
[],
False,
{},
0,
[],
[],
'3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit '
'(AMD64)]',
[('终端转成都',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\终端转成都.py',
'PYSOURCE')],
[('tracemalloc', 'C:\\python\\lib\\tracemalloc.py', 'PYMODULE'),
('pickle', 'C:\\python\\lib\\pickle.py', 'PYMODULE'),
('pprint', 'C:\\python\\lib\\pprint.py', 'PYMODULE'),
('_compat_pickle', 'C:\\python\\lib\\_compat_pickle.py', 'PYMODULE'),
('struct', 'C:\\python\\lib\\struct.py', 'PYMODULE'),
('fnmatch', 'C:\\python\\lib\\fnmatch.py', 'PYMODULE'),
('copy', 'C:\\python\\lib\\copy.py', 'PYMODULE'),
('quopri', 'C:\\python\\lib\\quopri.py', 'PYMODULE'),
('getopt', 'C:\\python\\lib\\getopt.py', 'PYMODULE'),
('gettext', 'C:\\python\\lib\\gettext.py', 'PYMODULE'),
('stringprep', 'C:\\python\\lib\\stringprep.py', 'PYMODULE'),
('bz2', 'C:\\python\\lib\\bz2.py', 'PYMODULE'),
('_compression', 'C:\\python\\lib\\_compression.py', 'PYMODULE'),
('base64', 'C:\\python\\lib\\base64.py', 'PYMODULE'),
('typing', 'C:\\python\\lib\\typing.py', 'PYMODULE'),
('contextlib', 'C:\\python\\lib\\contextlib.py', 'PYMODULE'),
('subprocess', 'C:\\python\\lib\\subprocess.py', 'PYMODULE'),
('selectors', 'C:\\python\\lib\\selectors.py', 'PYMODULE'),
('signal', 'C:\\python\\lib\\signal.py', 'PYMODULE'),
('tokenize', 'C:\\python\\lib\\tokenize.py', 'PYMODULE'),
('argparse', 'C:\\python\\lib\\argparse.py', 'PYMODULE'),
('textwrap', 'C:\\python\\lib\\textwrap.py', 'PYMODULE'),
('shutil', 'C:\\python\\lib\\shutil.py', 'PYMODULE'),
('zipfile', 'C:\\python\\lib\\zipfile.py', 'PYMODULE'),
('py_compile', 'C:\\python\\lib\\py_compile.py', 'PYMODULE'),
('importlib.machinery',
'C:\\python\\lib\\importlib\\machinery.py',
'PYMODULE'),
('importlib', 'C:\\python\\lib\\importlib\\__init__.py', 'PYMODULE'),
('importlib._bootstrap',
'C:\\python\\lib\\importlib\\_bootstrap.py',
'PYMODULE'),
('importlib._bootstrap_external',
'C:\\python\\lib\\importlib\\_bootstrap_external.py',
'PYMODULE'),
('importlib.metadata', 'C:\\python\\lib\\importlib\\metadata.py', 'PYMODULE'),
('importlib.abc', 'C:\\python\\lib\\importlib\\abc.py', 'PYMODULE'),
('configparser', 'C:\\python\\lib\\configparser.py', 'PYMODULE'),
('pathlib', 'C:\\python\\lib\\pathlib.py', 'PYMODULE'),
('urllib.parse', 'C:\\python\\lib\\urllib\\parse.py', 'PYMODULE'),
('urllib', 'C:\\python\\lib\\urllib\\__init__.py', 'PYMODULE'),
('email', 'C:\\python\\lib\\email\\__init__.py', 'PYMODULE'),
('email.parser', 'C:\\python\\lib\\email\\parser.py', 'PYMODULE'),
('email._policybase', 'C:\\python\\lib\\email\\_policybase.py', 'PYMODULE'),
('email.utils', 'C:\\python\\lib\\email\\utils.py', 'PYMODULE'),
('email._parseaddr', 'C:\\python\\lib\\email\\_parseaddr.py', 'PYMODULE'),
('calendar', 'C:\\python\\lib\\calendar.py', 'PYMODULE'),
('datetime', 'C:\\python\\lib\\datetime.py', 'PYMODULE'),
('_strptime', 'C:\\python\\lib\\_strptime.py', 'PYMODULE'),
('random', 'C:\\python\\lib\\random.py', 'PYMODULE'),
('statistics', 'C:\\python\\lib\\statistics.py', 'PYMODULE'),
('decimal', 'C:\\python\\lib\\decimal.py', 'PYMODULE'),
('_pydecimal', 'C:\\python\\lib\\_pydecimal.py', 'PYMODULE'),
('contextvars', 'C:\\python\\lib\\contextvars.py', 'PYMODULE'),
('fractions', 'C:\\python\\lib\\fractions.py', 'PYMODULE'),
('numbers', 'C:\\python\\lib\\numbers.py', 'PYMODULE'),
('hashlib', 'C:\\python\\lib\\hashlib.py', 'PYMODULE'),
('logging', 'C:\\python\\lib\\logging\\__init__.py', 'PYMODULE'),
('string', 'C:\\python\\lib\\string.py', 'PYMODULE'),
('bisect', 'C:\\python\\lib\\bisect.py', 'PYMODULE'),
('email.feedparser', 'C:\\python\\lib\\email\\feedparser.py', 'PYMODULE'),
('email.message', 'C:\\python\\lib\\email\\message.py', 'PYMODULE'),
('email.policy', 'C:\\python\\lib\\email\\policy.py', 'PYMODULE'),
('email.contentmanager',
'C:\\python\\lib\\email\\contentmanager.py',
'PYMODULE'),
('email.quoprimime', 'C:\\python\\lib\\email\\quoprimime.py', 'PYMODULE'),
('email.headerregistry',
'C:\\python\\lib\\email\\headerregistry.py',
'PYMODULE'),
('email.iterators', 'C:\\python\\lib\\email\\iterators.py', 'PYMODULE'),
('email.generator', 'C:\\python\\lib\\email\\generator.py', 'PYMODULE'),
('email._encoded_words',
'C:\\python\\lib\\email\\_encoded_words.py',
'PYMODULE'),
('uu', 'C:\\python\\lib\\uu.py', 'PYMODULE'),
('optparse', 'C:\\python\\lib\\optparse.py', 'PYMODULE'),
('email._header_value_parser',
'C:\\python\\lib\\email\\_header_value_parser.py',
'PYMODULE'),
('email.header', 'C:\\python\\lib\\email\\header.py', 'PYMODULE'),
('email.base64mime', 'C:\\python\\lib\\email\\base64mime.py', 'PYMODULE'),
('email.charset', 'C:\\python\\lib\\email\\charset.py', 'PYMODULE'),
('email.encoders', 'C:\\python\\lib\\email\\encoders.py', 'PYMODULE'),
('email.errors', 'C:\\python\\lib\\email\\errors.py', 'PYMODULE'),
('csv', 'C:\\python\\lib\\csv.py', 'PYMODULE'),
('importlib.util', 'C:\\python\\lib\\importlib\\util.py', 'PYMODULE'),
('tarfile', 'C:\\python\\lib\\tarfile.py', 'PYMODULE'),
('gzip', 'C:\\python\\lib\\gzip.py', 'PYMODULE'),
('lzma', 'C:\\python\\lib\\lzma.py', 'PYMODULE'),
('token', 'C:\\python\\lib\\token.py', 'PYMODULE'),
('_py_abc', 'C:\\python\\lib\\_py_abc.py', 'PYMODULE'),
('threading', 'C:\\python\\lib\\threading.py', 'PYMODULE'),
('_threading_local', 'C:\\python\\lib\\_threading_local.py', 'PYMODULE'),
('socket', 'C:\\python\\lib\\socket.py', 'PYMODULE')],
[('python39.dll', 'C:\\python\\python39.dll', 'BINARY'),
('unicodedata.pyd', 'C:\\python\\DLLs\\unicodedata.pyd', 'EXTENSION'),
('_bz2.pyd', 'C:\\python\\DLLs\\_bz2.pyd', 'EXTENSION'),
('select.pyd', 'C:\\python\\DLLs\\select.pyd', 'EXTENSION'),
('_decimal.pyd', 'C:\\python\\DLLs\\_decimal.pyd', 'EXTENSION'),
('_hashlib.pyd', 'C:\\python\\DLLs\\_hashlib.pyd', 'EXTENSION'),
('_lzma.pyd', 'C:\\python\\DLLs\\_lzma.pyd', 'EXTENSION'),
('_socket.pyd', 'C:\\python\\DLLs\\_socket.pyd', 'EXTENSION'),
('VCRUNTIME140.dll', 'C:\\python\\VCRUNTIME140.dll', 'BINARY'),
('api-ms-win-crt-convert-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-convert-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-time-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-time-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-math-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-math-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-runtime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-runtime-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-conio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-conio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-environment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-environment-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-locale-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-locale-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-filesystem-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-filesystem-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-process-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-process-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-stdio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-stdio-l1-1-0.dll',
'BINARY'),
('libcrypto-1_1.dll', 'C:\\python\\DLLs\\libcrypto-1_1.dll', 'BINARY'),
('ucrtbase.dll', 'C:\\WINDOWS\\system32\\ucrtbase.dll', 'BINARY'),
('api-ms-win-crt-utility-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-utility-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-handle-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-handle-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-rtlsupport-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-rtlsupport-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-sysinfo-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-sysinfo-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-interlocked-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-interlocked-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-timezone-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-timezone-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-libraryloader-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-libraryloader-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-console-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-console-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-memory-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-memory-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-localization-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-localization-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-profile-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-profile-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-1.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-1.dll',
'BINARY'),
('api-ms-win-core-namedpipe-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-namedpipe-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processenvironment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processenvironment-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-util-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-util-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l2-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l2-1-0.dll',
'BINARY'),
('api-ms-win-core-errorhandling-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-errorhandling-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-datetime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-datetime-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-debug-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-debug-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-2-0.dll',
'BINARY')],
[],
[],
[('base_library.zip',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\base_library.zip',
'DATA')])

View File

@@ -0,0 +1,193 @@
('E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\dist\\终端转成都.exe',
True,
False,
False,
'C:\\python\\lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico',
None,
False,
False,
b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns='
b'"urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\n <trustInfo x'
b'mlns="urn:schemas-microsoft-com:asm.v3">\n <security>\n <requested'
b'Privileges>\n <requestedExecutionLevel level="asInvoker" uiAccess='
b'"false"/>\n </requestedPrivileges>\n </security>\n </trustInfo>\n '
b'<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">\n <'
b'application>\n <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f'
b'0}"/>\n <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>\n '
b' <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>\n <s'
b'upportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>\n <supporte'
b'dOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>\n </application>\n <'
b'/compatibility>\n <application xmlns="urn:schemas-microsoft-com:asm.v3">'
b'\n <windowsSettings>\n <longPathAware xmlns="http://schemas.micros'
b'oft.com/SMI/2016/WindowsSettings">true</longPathAware>\n </windowsSett'
b'ings>\n </application>\n <dependency>\n <dependentAssembly>\n <ass'
b'emblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version='
b'"6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" langua'
b'ge="*"/>\n </dependentAssembly>\n </dependency>\n</assembly>',
True,
False,
None,
None,
None,
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\终端转成都.pkg',
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\PYZ-00.pyz',
'PYZ'),
('struct',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\python\\lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('终端转成都',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\终端转成都.py',
'PYSOURCE'),
('python39.dll', 'C:\\python\\python39.dll', 'BINARY'),
('unicodedata.pyd', 'C:\\python\\DLLs\\unicodedata.pyd', 'EXTENSION'),
('_bz2.pyd', 'C:\\python\\DLLs\\_bz2.pyd', 'EXTENSION'),
('select.pyd', 'C:\\python\\DLLs\\select.pyd', 'EXTENSION'),
('_decimal.pyd', 'C:\\python\\DLLs\\_decimal.pyd', 'EXTENSION'),
('_hashlib.pyd', 'C:\\python\\DLLs\\_hashlib.pyd', 'EXTENSION'),
('_lzma.pyd', 'C:\\python\\DLLs\\_lzma.pyd', 'EXTENSION'),
('_socket.pyd', 'C:\\python\\DLLs\\_socket.pyd', 'EXTENSION'),
('VCRUNTIME140.dll', 'C:\\python\\VCRUNTIME140.dll', 'BINARY'),
('api-ms-win-crt-convert-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-convert-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-time-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-time-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-math-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-math-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-runtime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-runtime-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-conio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-conio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-environment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-environment-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-locale-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-locale-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-filesystem-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-filesystem-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-process-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-process-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-stdio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-stdio-l1-1-0.dll',
'BINARY'),
('libcrypto-1_1.dll', 'C:\\python\\DLLs\\libcrypto-1_1.dll', 'BINARY'),
('ucrtbase.dll', 'C:\\WINDOWS\\system32\\ucrtbase.dll', 'BINARY'),
('api-ms-win-crt-utility-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-utility-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-handle-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-handle-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-rtlsupport-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-rtlsupport-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-sysinfo-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-sysinfo-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-interlocked-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-interlocked-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-timezone-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-timezone-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-libraryloader-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-libraryloader-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-console-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-console-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-memory-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-memory-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-localization-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-localization-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-profile-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-profile-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-1.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-1.dll',
'BINARY'),
('api-ms-win-core-namedpipe-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-namedpipe-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processenvironment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processenvironment-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-util-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-util-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l2-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l2-1-0.dll',
'BINARY'),
('api-ms-win-core-errorhandling-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-errorhandling-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-datetime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-datetime-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-debug-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-debug-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-2-0.dll',
'BINARY'),
('base_library.zip',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\base_library.zip',
'DATA')],
[],
False,
False,
1758778344,
[('run.exe',
'C:\\python\\lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],
'C:\\python\\python39.dll')

View File

@@ -0,0 +1,171 @@
('E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\终端转成都.pkg',
{'BINARY': True,
'DATA': True,
'EXECUTABLE': True,
'EXTENSION': True,
'PYMODULE': True,
'PYSOURCE': True,
'PYZ': False,
'SPLASH': True,
'SYMLINK': False},
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\PYZ-00.pyz',
'PYZ'),
('struct',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\python\\lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('终端转成都',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\终端转成都.py',
'PYSOURCE'),
('python39.dll', 'C:\\python\\python39.dll', 'BINARY'),
('unicodedata.pyd', 'C:\\python\\DLLs\\unicodedata.pyd', 'EXTENSION'),
('_bz2.pyd', 'C:\\python\\DLLs\\_bz2.pyd', 'EXTENSION'),
('select.pyd', 'C:\\python\\DLLs\\select.pyd', 'EXTENSION'),
('_decimal.pyd', 'C:\\python\\DLLs\\_decimal.pyd', 'EXTENSION'),
('_hashlib.pyd', 'C:\\python\\DLLs\\_hashlib.pyd', 'EXTENSION'),
('_lzma.pyd', 'C:\\python\\DLLs\\_lzma.pyd', 'EXTENSION'),
('_socket.pyd', 'C:\\python\\DLLs\\_socket.pyd', 'EXTENSION'),
('VCRUNTIME140.dll', 'C:\\python\\VCRUNTIME140.dll', 'BINARY'),
('api-ms-win-crt-convert-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-convert-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-time-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-time-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-math-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-math-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-runtime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-runtime-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-conio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-conio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-environment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-environment-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-locale-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-locale-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-filesystem-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-filesystem-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-process-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-process-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-stdio-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-stdio-l1-1-0.dll',
'BINARY'),
('libcrypto-1_1.dll', 'C:\\python\\DLLs\\libcrypto-1_1.dll', 'BINARY'),
('ucrtbase.dll', 'C:\\WINDOWS\\system32\\ucrtbase.dll', 'BINARY'),
('api-ms-win-crt-utility-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-crt-utility-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-handle-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-handle-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-rtlsupport-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-rtlsupport-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-sysinfo-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-sysinfo-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-interlocked-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-interlocked-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-timezone-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-timezone-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-libraryloader-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-libraryloader-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-console-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-console-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-memory-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-memory-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-string-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-localization-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-localization-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-profile-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-profile-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-1.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-1.dll',
'BINARY'),
('api-ms-win-core-namedpipe-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-namedpipe-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processenvironment-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processenvironment-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-util-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-util-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l2-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-file-l2-1-0.dll',
'BINARY'),
('api-ms-win-core-errorhandling-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-errorhandling-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-datetime-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-datetime-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-processthreads-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-heap-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-debug-l1-1-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-debug-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-2-0.dll',
'C:\\WINDOWS\\system32\\api-ms-win-core-synch-l1-2-0.dll',
'BINARY'),
('base_library.zip',
'E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\base_library.zip',
'DATA')],
'python39.dll',
False,
False,
False,
[],
None,
None,
None)

View File

@@ -0,0 +1,95 @@
('E:\\projects\\wxwx\\projects_job\\VDES_Projects\\报文模拟解析\\异地组网\\打包\\build\\终端转成都\\PYZ-00.pyz',
[('_compat_pickle', 'C:\\python\\lib\\_compat_pickle.py', 'PYMODULE'),
('_compression', 'C:\\python\\lib\\_compression.py', 'PYMODULE'),
('_py_abc', 'C:\\python\\lib\\_py_abc.py', 'PYMODULE'),
('_pydecimal', 'C:\\python\\lib\\_pydecimal.py', 'PYMODULE'),
('_strptime', 'C:\\python\\lib\\_strptime.py', 'PYMODULE'),
('_threading_local', 'C:\\python\\lib\\_threading_local.py', 'PYMODULE'),
('argparse', 'C:\\python\\lib\\argparse.py', 'PYMODULE'),
('base64', 'C:\\python\\lib\\base64.py', 'PYMODULE'),
('bisect', 'C:\\python\\lib\\bisect.py', 'PYMODULE'),
('bz2', 'C:\\python\\lib\\bz2.py', 'PYMODULE'),
('calendar', 'C:\\python\\lib\\calendar.py', 'PYMODULE'),
('configparser', 'C:\\python\\lib\\configparser.py', 'PYMODULE'),
('contextlib', 'C:\\python\\lib\\contextlib.py', 'PYMODULE'),
('contextvars', 'C:\\python\\lib\\contextvars.py', 'PYMODULE'),
('copy', 'C:\\python\\lib\\copy.py', 'PYMODULE'),
('csv', 'C:\\python\\lib\\csv.py', 'PYMODULE'),
('datetime', 'C:\\python\\lib\\datetime.py', 'PYMODULE'),
('decimal', 'C:\\python\\lib\\decimal.py', 'PYMODULE'),
('email', 'C:\\python\\lib\\email\\__init__.py', 'PYMODULE'),
('email._encoded_words',
'C:\\python\\lib\\email\\_encoded_words.py',
'PYMODULE'),
('email._header_value_parser',
'C:\\python\\lib\\email\\_header_value_parser.py',
'PYMODULE'),
('email._parseaddr', 'C:\\python\\lib\\email\\_parseaddr.py', 'PYMODULE'),
('email._policybase', 'C:\\python\\lib\\email\\_policybase.py', 'PYMODULE'),
('email.base64mime', 'C:\\python\\lib\\email\\base64mime.py', 'PYMODULE'),
('email.charset', 'C:\\python\\lib\\email\\charset.py', 'PYMODULE'),
('email.contentmanager',
'C:\\python\\lib\\email\\contentmanager.py',
'PYMODULE'),
('email.encoders', 'C:\\python\\lib\\email\\encoders.py', 'PYMODULE'),
('email.errors', 'C:\\python\\lib\\email\\errors.py', 'PYMODULE'),
('email.feedparser', 'C:\\python\\lib\\email\\feedparser.py', 'PYMODULE'),
('email.generator', 'C:\\python\\lib\\email\\generator.py', 'PYMODULE'),
('email.header', 'C:\\python\\lib\\email\\header.py', 'PYMODULE'),
('email.headerregistry',
'C:\\python\\lib\\email\\headerregistry.py',
'PYMODULE'),
('email.iterators', 'C:\\python\\lib\\email\\iterators.py', 'PYMODULE'),
('email.message', 'C:\\python\\lib\\email\\message.py', 'PYMODULE'),
('email.parser', 'C:\\python\\lib\\email\\parser.py', 'PYMODULE'),
('email.policy', 'C:\\python\\lib\\email\\policy.py', 'PYMODULE'),
('email.quoprimime', 'C:\\python\\lib\\email\\quoprimime.py', 'PYMODULE'),
('email.utils', 'C:\\python\\lib\\email\\utils.py', 'PYMODULE'),
('fnmatch', 'C:\\python\\lib\\fnmatch.py', 'PYMODULE'),
('fractions', 'C:\\python\\lib\\fractions.py', 'PYMODULE'),
('getopt', 'C:\\python\\lib\\getopt.py', 'PYMODULE'),
('gettext', 'C:\\python\\lib\\gettext.py', 'PYMODULE'),
('gzip', 'C:\\python\\lib\\gzip.py', 'PYMODULE'),
('hashlib', 'C:\\python\\lib\\hashlib.py', 'PYMODULE'),
('importlib', 'C:\\python\\lib\\importlib\\__init__.py', 'PYMODULE'),
('importlib._bootstrap',
'C:\\python\\lib\\importlib\\_bootstrap.py',
'PYMODULE'),
('importlib._bootstrap_external',
'C:\\python\\lib\\importlib\\_bootstrap_external.py',
'PYMODULE'),
('importlib.abc', 'C:\\python\\lib\\importlib\\abc.py', 'PYMODULE'),
('importlib.machinery',
'C:\\python\\lib\\importlib\\machinery.py',
'PYMODULE'),
('importlib.metadata', 'C:\\python\\lib\\importlib\\metadata.py', 'PYMODULE'),
('importlib.util', 'C:\\python\\lib\\importlib\\util.py', 'PYMODULE'),
('logging', 'C:\\python\\lib\\logging\\__init__.py', 'PYMODULE'),
('lzma', 'C:\\python\\lib\\lzma.py', 'PYMODULE'),
('numbers', 'C:\\python\\lib\\numbers.py', 'PYMODULE'),
('optparse', 'C:\\python\\lib\\optparse.py', 'PYMODULE'),
('pathlib', 'C:\\python\\lib\\pathlib.py', 'PYMODULE'),
('pickle', 'C:\\python\\lib\\pickle.py', 'PYMODULE'),
('pprint', 'C:\\python\\lib\\pprint.py', 'PYMODULE'),
('py_compile', 'C:\\python\\lib\\py_compile.py', 'PYMODULE'),
('quopri', 'C:\\python\\lib\\quopri.py', 'PYMODULE'),
('random', 'C:\\python\\lib\\random.py', 'PYMODULE'),
('selectors', 'C:\\python\\lib\\selectors.py', 'PYMODULE'),
('shutil', 'C:\\python\\lib\\shutil.py', 'PYMODULE'),
('signal', 'C:\\python\\lib\\signal.py', 'PYMODULE'),
('socket', 'C:\\python\\lib\\socket.py', 'PYMODULE'),
('statistics', 'C:\\python\\lib\\statistics.py', 'PYMODULE'),
('string', 'C:\\python\\lib\\string.py', 'PYMODULE'),
('stringprep', 'C:\\python\\lib\\stringprep.py', 'PYMODULE'),
('subprocess', 'C:\\python\\lib\\subprocess.py', 'PYMODULE'),
('tarfile', 'C:\\python\\lib\\tarfile.py', 'PYMODULE'),
('textwrap', 'C:\\python\\lib\\textwrap.py', 'PYMODULE'),
('threading', 'C:\\python\\lib\\threading.py', 'PYMODULE'),
('token', 'C:\\python\\lib\\token.py', 'PYMODULE'),
('tokenize', 'C:\\python\\lib\\tokenize.py', 'PYMODULE'),
('tracemalloc', 'C:\\python\\lib\\tracemalloc.py', 'PYMODULE'),
('typing', 'C:\\python\\lib\\typing.py', 'PYMODULE'),
('urllib', 'C:\\python\\lib\\urllib\\__init__.py', 'PYMODULE'),
('urllib.parse', 'C:\\python\\lib\\urllib\\parse.py', 'PYMODULE'),
('uu', 'C:\\python\\lib\\uu.py', 'PYMODULE'),
('zipfile', 'C:\\python\\lib\\zipfile.py', 'PYMODULE')])

View File

@@ -0,0 +1,26 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named 'org.python' - imported by pickle (optional)
missing module named org - imported by copy (optional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional)
missing module named _posixsubprocess - imported by subprocess (optional)
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional)
missing module named resource - imported by posix (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional)
missing module named pep517 - imported by importlib.metadata (delayed)

View File

@@ -0,0 +1,2 @@
192.168.2.183:10
172.16.1.59:8081

Binary file not shown.

View File

@@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
import socket
import threading
import time
#SERVER_A = ("127.0.0.1", 10) # 终端IP地址
#LISTEN_B = ("127.0.0.1", 8080) # 本地监听端口模拟服务端B使用组网虚拟IP172.16.1.59:8080
# 从config.txt读取配置
with open('./config.txt', 'r') as f:
lines = f.readlines()
# 第一行为SERVER_A的IP和端口格式为0.0.0.0:10
server_a_parts = lines[0].strip().split(':')
SERVER_A = (server_a_parts[0], int(server_a_parts[1]))
# 第二行为LISTEN_B的IP和端口格式为0.0.0.0:10
listen_b_parts = lines[1].strip().split(':')
LISTEN_B = (listen_b_parts[0], int(listen_b_parts[1]))
clients = [] # 保存所有连接到B的客户端
def handle_client(conn, addr):
"""服务端B处理客户端连接"""
print(f"[B] 客户端已连接: {addr}")
clients.append(conn)
try:
while True:
data = conn.recv(1024)
if not data:
break
print(f"[B] 收到客户端消息(一般不用处理): {data!r}")
except Exception as e:
print(f"[B] 客户端异常: {e}")
finally:
clients.remove(conn)
conn.close()
print(f"[B] 客户端断开: {addr}")
def start_server_b():
"""启动服务端B"""
global server_b_started
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(LISTEN_B)
s.listen(5)
server_b_started = True
print(f"[B] 模拟服务端B已启动监听 {LISTEN_B}")
while True:
conn, addr = s.accept()
threading.Thread(target=handle_client, args=(conn, addr), daemon=True).start()
except Exception as e:
server_b_started = False
print(f"[B] 服务端B异常: {e}")
def connect_server_a():
"""连接服务端A并转发数据到B的所有客户端"""
global server_b_started
while True: # 添加外层循环以实现重连
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(SERVER_A)
print(f"[A] 已连接到服务端A: {SERVER_A}")
while True:
# 检查服务端B是否正常启动
if not server_b_started:
print("[B] 警告: 服务端B没有正常启动可能是使用了本机不存在的IP地址")
data = s.recv(4096)
if not data:
print("[A] 连接关闭")
break
print(f"[A] 收到数据 {len(data)} 字节转发给B的客户端")
# 转发给所有已连接B的客户端
for c in clients[:]:
try:
c.sendall(data)
except Exception as e:
print(f"[B] 转发失败: {e}")
clients.remove(c)
c.close()
s.close() # 正常关闭连接
except Exception as e:
print(f"[A] 连接失败: {e}")
print("[A] 10秒后尝试重新连接...")
time.sleep(10) # 等待10秒后重新连接
if __name__ == "__main__":
# 服务端B启动状态标志
server_b_started = False
# 启动服务端B
threading.Thread(target=start_server_b, daemon=True).start()
# 启动客户端去连接服务端A
connect_server_a()

View File

@@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['终端转成都.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='终端转成都',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

View File

@@ -0,0 +1,239 @@
import struct
import socket
import time
import random
import math
import threading
# ------------------------ 全局队列和锁 ------------------------
vdes_message_queue = []
message_queue_lock = threading.Lock()
# ------------------------ 船只初始化 ------------------------
SHIP_MMSIS = [random.randint(336295939, 336295969) for _ in range(10)]
SHIP_STATUS = {}
SHIP_LIST = [
(336295939 + i, round(random.uniform(30.0, 34.0), 6),
round(random.uniform(123.5, 126.0), 6), random.randint(0, 359))
for i in range(30)
]
for ship in SHIP_LIST:
mmsi, init_lat, init_lon, heading = ship
SHIP_STATUS[mmsi] = {
'current_lat': init_lat,
'current_lon': init_lon,
'heading': heading,
'speed': 280.24 # 加速100倍用于演示
}
# ------------------------ 当前坐标 ------------------------
YANGTZE_ESTUARY_LAT = 31.23
YANGTZE_ESTUARY_LON = 123.87
current_lat = YANGTZE_ESTUARY_LAT
current_lon = YANGTZE_ESTUARY_LON
own_heading = 90 # 固定航向
# ------------------------ 工具函数 ------------------------
def generate_random_position():
global current_lat, current_lon, own_heading
speed_knots = 300.24
speed_kmh = speed_knots * 1.852
speed_kmps = speed_kmh / 3600
distance_km = speed_kmps * 1
heading_rad = math.radians(own_heading)
delta_lat = distance_km / 111.0 * math.cos(heading_rad)
delta_lon = distance_km / (111.0 * math.cos(math.radians(current_lat))) * math.sin(heading_rad)
current_lat += delta_lat
current_lon += delta_lon
return int(current_lon * 10000000), int(current_lat * 10000000)
def generate_ship_position(mmsi):
ship = SHIP_STATUS[mmsi]
speed_kmh = ship['speed'] * 1.852
distance_km = speed_kmh / 3600
heading_rad = math.radians(ship['heading'])
delta_lat = distance_km / 111.0 * math.cos(heading_rad)
delta_lon = distance_km / (111.0 * math.cos(math.radians(ship['current_lat']))) * math.sin(heading_rad)
ship['current_lat'] += delta_lat
ship['current_lon'] += delta_lon
return ship['current_lon'], ship['current_lat']
def create_tcp_packet(packet_type, content):
header = b'####'
type_field = struct.pack('>I', packet_type)
length_field = struct.pack('>I', len(content))
return header + type_field + length_field + content
def create_gps_packet():
lon, lat = generate_random_position()
utc_time = int(time.time())
content = struct.pack('>QiiiHHHBBIII',
utc_time, lon, lat, 50, 10, 8, 7, 1, 3, 2550, 1024, own_heading)
return content
def create_ais_vdes_info_packet(demod_content, Demodulator_id):
snr = 25.75
snr_int = int(snr)
snr_frac = int((snr - snr_int) * 100)
snr_packed = (snr_int & 0xFF) << 8 | (snr_frac & 0xFF)
content = struct.pack('>BBBHHH', 12, 1, Demodulator_id, 1234, 5678, snr_packed)
return content + demod_content
def encode_ais_demod_fields(SHIP_MMSI, lat, lon, heading):
bits = []
bits.append(format(1, '06b'))
bits.append(format(0, '02b'))
bits.append(format(SHIP_MMSI, '030b'))
bits.append(format(8, '04b'))
bits.append(format(128 & 0xFF, '08b'))
bits.append(format(102, '010b'))
bits.append(str(1))
bits.append(format(int(lon * 60 * 10000) & 0x0FFFFFFF, '028b'))
bits.append(format(int(lat * 60 * 10000) & 0x07FFFFFF, '027b'))
bits.append(format(min(heading, 3600), '012b'))
bits.append(format(min(heading, 511), '09b'))
bits.append(format(30, '06b'))
bits.append(format(0, '02b'))
bits.append(format(0, '03b'))
bits.append(str(0))
bits.append(format(0, '019b'))
bit_string = ''.join(bits)
binary_int = int(bit_string, 2)
byte_length = (len(bit_string) + 7) // 8
return binary_int.to_bytes(byte_length, 'big')
def encode_vdes_demod_fields(Type, Fragment_num, MMSI, Payload):
source_id = 12345678
satellite_id = 1
session_id = 100
dest_id = MMSI
fragment_num = Fragment_num
binary_payload = Payload
payload_size = 4 + 1 + 1 + 4 + 2 + len(binary_payload)
content = struct.pack('>B H I B B I H',
Type, payload_size, source_id, satellite_id, session_id, dest_id, fragment_num)
return content + binary_payload
# ------------------------ 线程函数 ------------------------
def send_messages(conn):
global frame_index
try:
while True:
with message_queue_lock:
if vdes_message_queue:
packet = vdes_message_queue.pop(0)
else:
packet = None
if packet:
try:
conn.sendall(packet)
except (ConnectionResetError, ConnectionAbortedError, BrokenPipeError):
print("发送失败,客户端断开")
break
else:
if ais_frames:
# print(ais_frames, type(ais_frames))
frame = ais_frames[frame_index]
try:
conn.sendall(frame)
print(f"发送报文帧[{frame_index}]:", frame.hex())
except (ConnectionResetError, ConnectionAbortedError, BrokenPipeError):
print("发送失败,客户端断开")
break
# 轮流取下一帧
frame_index = (frame_index + 1) % len(ais_frames)
time.sleep(5)
# pass
# 生成并发送AIS报文
# selected_ship = random.choice(SHIP_LIST)
# mmsi = selected_ship[0]
# lon, lat = generate_ship_position(mmsi)
# heading = SHIP_STATUS[mmsi]['heading']
# ais_demod_content = encode_ais_demod_fields(mmsi, lat, lon, heading)
# ais_data = create_ais_vdes_info_packet(ais_demod_content, 4)
# ais_packet = create_tcp_packet(12, ais_data)
# #生成并发送GPS报文
# gps_content = create_gps_packet()
# gps_packet = create_tcp_packet(7, gps_content)
# try:
# conn.sendall(ais_packet)
# conn.sendall(gps_packet)
# except (ConnectionResetError, ConnectionAbortedError, BrokenPipeError):
# print("发送失败,客户端断开")
# break
time.sleep(0.5)
finally:
print("发送线程退出")
def handle_client(conn, addr):
print(f"客户端连接: {addr}")
unpacker = 'VdesMessageUnpack()'
fragment_num = 0
send_thread = threading.Thread(target=send_messages, args=(conn,))
send_thread.daemon = True
send_thread.start()
try:
while True:
try:
data = conn.recv(65536)
if not data:
print("客户端关闭连接")
break
# 解析报文并加入发送队列
frame_type=''
message = 'unpacker.unpack_tcp_packet(data)'
mmsi = 'unpacker.get_mmsi()'
Type = 30 if frame_type == 0 else 31 if frame_type == 1 else 32
vdes_demod_content = encode_vdes_demod_fields(Type, fragment_num, mmsi, message)
vdes_data = create_ais_vdes_info_packet(vdes_demod_content, 0)
vdes_packet = create_tcp_packet(12, vdes_data)
fragment_num += 1
with message_queue_lock:
vdes_message_queue.append(vdes_packet)
except (ConnectionResetError, ConnectionAbortedError):
print("客户端断开连接")
break
except Exception as e:
print(f"解析报文错误: {e}")
finally:
conn.close()
print("客户端连接关闭")
# ------------------------ 服务端启动 ------------------------
def send_data_continuously():
host = 'localhost'
port = 8081
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
print(f"服务端启动 {host}:{port}")
try:
while True:
conn, addr = s.accept()
client_thread = threading.Thread(target=handle_client, args=(conn, addr))
client_thread.daemon = True
client_thread.start()
except KeyboardInterrupt:
print("服务端停止")
def load_frames(filepath):
with open(filepath, "rb") as f:
data = f.read()
delimiter = b"####" # 帧起始标记
frames = data.split(delimiter)
# 加回起始符,过滤掉空的
frames = [delimiter + frame for frame in frames if frame]
return frames
if __name__ == "__main__":
# 全局变量:预加载所有帧
ais_frames = load_frames("./tcp_data/TCP_GNSS消息.bin")
frame_index = 0 # 当前取到第几帧
send_data_continuously()

View File

@@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
import socket
import threading
import time
#SERVER_A = ("127.0.0.1", 10) # 终端IP地址
#LISTEN_B = ("127.0.0.1", 8080) # 本地监听端口模拟服务端B使用组网虚拟IP172.16.1.59:8080
# 从config.txt读取配置
with open('./config.txt', 'r') as f:
lines = f.readlines()
# 第一行为SERVER_A的IP和端口格式为0.0.0.0:10
server_a_parts = lines[0].strip().split(':')
SERVER_A = (server_a_parts[0], int(server_a_parts[1]))
# 第二行为LISTEN_B的IP和端口格式为0.0.0.0:10
listen_b_parts = lines[1].strip().split(':')
LISTEN_B = (listen_b_parts[0], int(listen_b_parts[1]))
clients = [] # 保存所有连接到B的客户端
def handle_client(conn, addr):
"""服务端B处理客户端连接"""
print(f"[B] 客户端已连接: {addr}")
clients.append(conn)
try:
while True:
data = conn.recv(1024)
if not data:
break
print(f"[B] 收到客户端消息(一般不用处理): {data!r}")
except Exception as e:
print(f"[B] 客户端异常: {e}")
finally:
clients.remove(conn)
conn.close()
print(f"[B] 客户端断开: {addr}")
def start_server_b():
"""启动服务端B"""
global server_b_started
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(LISTEN_B)
s.listen(5)
server_b_started = True
print(f"[B] 模拟服务端B已启动监听 {LISTEN_B}")
while True:
conn, addr = s.accept()
threading.Thread(target=handle_client, args=(conn, addr), daemon=True).start()
except Exception as e:
server_b_started = False
print(f"[B] 服务端B异常: {e}")
def connect_server_a():
"""连接服务端A并转发数据到B的所有客户端"""
global server_b_started
while True: # 添加外层循环以实现重连
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(SERVER_A)
print(f"[A] 已连接到服务端A: {SERVER_A}")
while True:
# 检查服务端B是否正常启动
if not server_b_started:
print("[B] 警告: 服务端B没有正常启动可能是使用了本机不存在的IP地址")
data = s.recv(4096)
if not data:
print("[A] 连接关闭")
break
print(f"[A] 收到数据 {len(data)} 字节转发给B的客户端")
# 转发给所有已连接B的客户端
for c in clients[:]:
try:
c.sendall(data)
except Exception as e:
print(f"[B] 转发失败: {e}")
clients.remove(c)
c.close()
s.close() # 正常关闭连接
except Exception as e:
print(f"[A] 连接失败: {e}")
print("[A] 10秒后尝试重新连接...")
time.sleep(10) # 等待10秒后重新连接
if __name__ == "__main__":
# 服务端B启动状态标志
server_b_started = False
# 启动服务端B
threading.Thread(target=start_server_b, daemon=True).start()
# 启动客户端去连接服务端A
connect_server_a()