私はPython3でチャットしようとしています。ここに私のコードは次のとおりです。python3 OSError:[Errno 107]トランスポートエンドポイントが接続されていません
import socket
import threading
print("Server starts working")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("", 57054))
sock.listen(2)
conn, addr = sock.accept()
def get_message():
while True:
data = sock.recv(1024).decode()
if len(data) != 0:
print("Some guy: ", data)
def send_message():
while True:
message = input()
if len(message) != 0:
message = str.encode(message)
sock.send(message)
print("You: ", message)
def run():
get_message_thread = threading.Thread(target=get_message())
send_message_thread = threading.Thread(target=send_message())
get_message_thread.daemon = True
send_message_thread.daemon = True
get_message_thread.start()
send_message_thread.start()
run()
sock.close()
しかし、私はエラーメッセージを取得し、実行した後や、他のクライアントからメッセージを送信:私が読んだ
Server starts working
Traceback (most recent call last):
File "/home/ptrknvk/Documents/Study/Python/chat/chat.py", line 40, in <module>
run()
File "/home/ptrknvk/Documents/Study/Python/chat/chat.py", line 30, in run
get_message_thread = threading.Thread(target=get_message())
File "/home/ptrknvk/Documents/Study/Python/chat/chat.py", line 15, in get_message
data = sock.recv(1024).decode()
OSError: [Errno 107] Transport endpoint is not connected
Process finished with exit code 1
、sock.acceptといくつかの問題があること()、しかし、私は思うように、ここではすべて大丈夫です。
「ターゲット」には括弧を使用しないでください。 'threading.Thread(target = get_message)'に変更する 'threading.Thread(target = get_message())'を使うと、 'get_message()'が 'get_message'ではなくターゲットとして返すものを使用しています。 'send_message'で同じことをする必要があります。 – zondo