处理思路:
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 = 0while has_recv_size < down_size:remain_size = down_size-has_recv_sizechunk_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 += chunkhas_recv_size += len(chunk)print(msg)
