【发布时间】:2022-01-02 08:38:33
【问题描述】:
我的多线程 Python 套接字聊天只接受一个连接。如果我尝试连接第二个客户端,它不起作用。在客户端,似乎一切正常,但如果我尝试从客户端 2 发送第二条消息,则消息不会到达。
import socket
import threading
class TxtSocket:
def __init__(self, host="127.0.0.1" , port=5555):
self.host = host
self.port = port
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.bind((self.host, self.port))
print("Socket was created")
def server(self):
self.s.listen()
print("Server is listening")
conn, addr = self.s.accept()
print(f"{addr} is now connected.")
while True:
data = conn.recv(1024).decode("utf8")
print(data)
if not data:
break
if __name__ == "__main__":
txtsocket = TxtSocket()
for i in range(0, 26):
t = threading.Thread(target=txtsocket.server())
t.start()
# Client
import socket
def Text():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 5555))
print("Connected")
while True:
message = input("Deine Nachricht: ")
message = message.encode("utf8")
s.send(message)
Text()
【问题讨论】:
-
当套接字获得新连接以支持多个客户端时创建一个新线程来处理客户端连接 - 发布的服务器代码适用于连接到服务器的多个同时客户端。
-
如果答案有帮助,请随时投票,让其他人知道它很有用。另请注意,Python 有一个 SocketServer 模块,可以使服务器代码更简单。
标签: python sockets networking network-programming tuples