socket通信をするプログラムを作成中です。
環境
Python3
Anaconda
Windows7
問題点
ブロッキングソケットでN個のクライアントとサーバで送受信(無限ループ)をするプログラムを書いています。
クライアントが1つであれば問題なく動作するのですが、複数になるとrecv関数で処理が停止してしまいます。
これはrecv関数が受信待ちをしている為だと思っています。
そこで、タイムアウトを設定したりselect関数でデータ読み込み可能なソケットがあるか確認をしてみたのですが、改善しません。
setblocking(0)を設定も試してみました。
recv関数を実装しているコードは下記の通りです。
def reclall(sock,buffer_size=4096):
buf = recv(buffer_size)※ここで停止
eom = Fales
後続の処理(データ整理など)
ちなみにこの関数の呼び出し後にtime.sleep()を実装すると上手く動作します。
しかし、それで何故上手く動作するのかも分かりません。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー