import socket
import struct
# 创建UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定到特定的IP和端口
sock.bind(("192.168.100.1", 60000))
# 定义包头和包尾
HEADER = 0x55aa55aa
TAIL = 0xff00ff00
# 定义一个字典来存储分片的数据
data_dict = {}
while True:
# 接收数据
data, addr = sock.recvfrom(2048)#or repair to 1200
# 解析包头,帧序号和包尾
header, frame_number, *real_data, tail = struct.unpack('!I I {}s I'.format(len(data)-12), data)
# 检查包头和包尾是否正确
if header == HEADER and tail == TAIL:
# 如果帧序号已经在字典中,那么就把数据添加到对应的帧序号中
if frame_number in data_dict:
data_dict[frame_number] += real_data
else:
# 否则,创建一个新的帧序号,并把数据添加进去
data_dict[frame_number] = real_data
# 当收到所有的分片后,打印出真实的数据
if len(data_dict[frame_number])
python的socket接收数据
最新推荐文章于 2024-08-25 08:08:19 发布
该博客介绍了如何在Python中使用socket和struct.unpack函数解析包含包头、帧序号、真实数据和包尾的二进制网络数据。通过指定格式字符串,可以有效地提取出数据的各个部分。
订阅专栏 解锁全文

1444

被折叠的 条评论
为什么被折叠?



