間違い
TypeError: * の後のrecv_thread()引数は、ソケットの問題ではなく、反復可能である必要があります。
理由
このエラーは、スレッドの作成時にソケット オブジェクトが args パラメーターとして recv_thread 関数に渡されることが原因であり、args パラメーターにはタプルやリストなどの反復可能なオブジェクトが必要です。
解決
これは、ソケット オブジェクトにカンマを追加してタプルに変換することで修正できます。コードは次のようなものです:
def recv_thread(sock):
while True:
data = sock.recv(1024).decode()
thread = threading.Thread(target=recv_thread, args=(s))
は次のように変更できます。
def recv_thread(sock):
while True:
data = sock.recv(1024).decode()
thread = threading.Thread(target=recv_thread, args=(s,))
この方法では、* の後の TypeError:recv_thread() 引数は反復可能である必要があり、ソケット エラーを回避できません。
(1) Python Threading モジュール * の後のエラー引数は、int ではなく反復可能である必要があります。 multithreading - Python Threading module *の後のエラー引数はintではなく反復可能である必要があります - コードログ
(2) TypeError: * の後の send() 引数は ... のソケットではなく反復可能でなければなりません 。 [解決済み]TypeError: * の後の send() 引数は Python のソケットではなく反復可能でなければなりません。
(3) Python スレッド エラー - int ではなく反復可能である必要があります。 マルチスレッド - Python スレッドエラー - int ではなく反復可能である必要があります - スタック・オーバーフロー
(4) Python - TypeError: * の後の add() 引数は ... ではなく反復可能である必要があります 。python - TypeError: * の後の add() 引数は設定ではなく反復可能である必要があります - コードログ