处理思路:
1.声明每段数据的大小,这个大小需要使用4个字节
2.接到数据大小后,分块接收
接收时,假设每次最大接收1024
此时采用min{1024,剩余未接收的大小}作为循环的最大接收
deal_sticky(con,down_size,chunk_size = 0,object=''):
"""
功能:这个函数用于考虑大小的情况下,接受信息数据,不考虑类型
输出一律为二进制
:param con: 链接管道
:param down_size: 下载文件大小
:param chunk_size: 每次下载大小
:return: 返回下载的二进制bytes类型
"""
# 粘包处理函数
msg = b''
has_recv_size = 0
while has_recv_size < down_size:
remain_size = down_size-has_recv_size
chunk_size = remain_size if chunk_size == 0 else min(remain_size,chunk_size)
chunk = con.recv(chunk_size)
if object:
object.write(chunk)
object.flush()
else:
msg += chunk
has_recv_size += len(chunk)
print(msg)