这里是我的源代码: 各位大神如果有错误的地方请指正,。。
import socket import struct """ 或许你想了解关于 Python 中 struct 模块的函数。struct 模块允许你以一种字节安全的方式打包和解包数据。以下是一些常用函数: pack(format, v1, v2, ...): 这个函数将数据按照指定的格式 format 打包成一个字符串(字节流)。例如:struct.pack('I', 123) 将整数 123 打包成一个 4 字节的字符串,格式为无符号整数。 unpack(format, string): 这个函数从字节流中解包数据,按照给定的格式 format 进行解析。例如:struct.unpack('I', b'\x00\x00\x00\x7b') 将 4 字节的字节流转换为对应的整数。 calcsize(format): 返回给定格式字符串所需的字节数。例如:struct.calcsize('I') 将返回一个无符号整数所占的字节数。 pack_into(format, buffer, offset, v1, v2, ...): 将数据按照格式 format 打包到缓冲区 buffer 的指定偏移量 offset 处。例如:struct.pack_into('I', buf, 0, 123) 将整数 123 打包到缓冲区 buf 的开头。 unpack_from(format, buffer, offset=0): 从指定偏移量 offset 处开始,从缓冲区 buffer 中按照格式 format 解包数据。例如:struct.unpack_from('I', buf, 0) 将从缓冲区 buf 的开头解包一个无符号整数。 """ sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind(("127.0.0.1",10002)) sock.listen(5) conn,addr= sock.accept() # 接收头部长度 headerl=conn.recv(4) date_len=struct.unpack("i",headerl)[0] #然后把每一块的内容拼接起来 data1=b"" while True: #判断每一次接受的内容长度是多少 length=date_len-len(data1) #最大限度长度是1024, #就收长度是length的大小,防止粘包 chunk=conn.recv(min(length,1024)) #判断每次是否有内容,如果有内容 我就把他拼接起来 ,如果没有没有内容我就推出循环如果有内容我就把内容拼接起来 if not chunk: break data1=data1+chunk #结束循环的条件是 if len(data1)==date_len: break print(data1.decode("utf-8")) conn.close() sock.close()