pythonでsocketが大きなファイルを転送するとき、受信データが一致しない問題

1060 ワード

質問:サービス側受信データは受信すべきデータより小さい例えば、サービス側受信データ:dataRec=self.request.recv(1024) len(dataRec)<1024
解決策:受信すべきデータサイズが送信されるたびに、受信すべきデータと受信すべきデータサイズが一致するまで、データを受信し、つなぎ合わせます.
サービス側コード
#                
recvLength=struct.unpack('i',self.request.recv(4))[0]
logging.info("           :"+str(recvLength))
hasRecvLen=0  #         
recvDatas=bytes() #        
#                           ,        
while hasRecvLen

クライアントコード
data = f.read(10240)
#           ,       ,             ,    
sendDataLen=len(fernet.encrypt(data))  #               data       sendDataLen       #num_struct    
num_struct=struct.pack('i',sendDataLen) #        4   ,    
client.send(num_struct)  #  4         
logging.info("           :"+str(len(data))+"       :"+str(len(fernet.encrypt(data))))
client.sendall(fernet.encrypt(data))  #