Pythonのsocket通信でrecvのループが終了しない

実現したいこと

socketのrecvで少量ずつ受け取り全てのデータを受信できるようにしたい

発生している問題

  • 受信ループが終わらない
    • sock.recv(32)で受信できないときにブロッキングされており先に進めない

該当のソースコード

python

1import socket 2 3HOST = "0.0.0.0"4PORT = 80005 6sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)7sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)8sock.bind((HOST, PORT))9print("listening...")10sock.listen()11 12while True:13 client, addr = sock.accept()14 print(client, addr)15 print('ac', 'The connection accepted.')16 print('i', '{}:{} --------> {}:{}'.format(addr[0], addr[1],HOST, PORT))17 18 recv_data = b""19 recv_data = b""20 while True:21 data = client.recv(32)22 if not data:23 break24 recv_data += data 25 26 print("i", "Total received: {}".format(recv_data))

試したこと

  • タイムアウトを設定してみたが使い方が悪いのかうまく行かなかった

バージョン情報

pytnon3.8.10

コメントを投稿

0 コメント