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)) #