python的socket接收数据

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]) == 8*2*1024:
        print(data_dict[frame_number])
        del data_dict[frame_number]

猜你喜欢

转载自blog.csdn.net/pvmsmfchcs/article/details/132945617