前提・実現したいこと
Pythonでsocketを使い、チャット&ファイル送受信ソフトを作りたいです
チャット機能自体は作れたのですが、ファイル受信の機能がうまく作れません
受信側のrecv()で設定したサイズ以上のデータを送ると全て送れず、下記のコードで受信をループさせると今度は終わらせることができません。
どのようにすれば、データがすべて受信できたことを確認することができるでしょうか?
発生している問題・エラーメッセージ
python
1エラーメッセージ
該当のソースコード
python
1 while True: 2 rv1 = sock.recv(4096) 3 if type(rv) != bytes: 4 rv = b"" 5 bytes(rv) 6 if(rv1 == b""):break 7 rv += rv1 8 print(len(rv1)) 9 print(type(rv)) 10 rv = pickle.loads(rv) 11 print("rvの中身 :",rv) 12 print(type(rv)) 13
※インデントが少しおかしいかもしれません。
実装したいのは「データがもう送られてこなかったら」breakし、ループを抜けてそれをpickleでロードしたいです
こちらの質問内容から、「if not data(自分の場合はrv1)」はソケットがあるかどうかを監視していることがわかり。自分はチャットソフトとしても使うと想定しているので一回一回ソケットを閉じていられません。
どのようにすれば、データがすべて受信できたことを確認することができるでしょうか?
試したこと
補足情報(FW/ツールのバージョンなど)
Windows10
python 3.9.4
おかしなところがあれば申し訳ありません。色々教えていただければ幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。