我试图用线程来处理每个客户机,但是服务器一次只接受一个客户机。如果第一个客户机断开连接,则第二个客户机被接受。此外,每个客户端只能发送一次数据,程序将无法再发送数据。
在发布之前,我看过许多其他堆栈溢出帖子,包括以下内容:
但通过看这些帖子,我没有找到解决办法。
以下是服务器代码:import socket
from threading import *
def main():
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('172.20.3.62', 5000))
s.listen(1)
clients = []
print("listening")
def clienthandler(c):
clients.append(c)
try:
while True:
data = c.recv(1024).decode("UTF-8")
if not data:
break
else:
print(data)
for client in clients:
client.send(data.encode("UTF-8"))
except:
clients.remove(c)
c.close()
while True:
c, addr = s.accept()
print("accepted a client")
Thread(target=clienthandler(c)).start()
if __name__ == '__main__':
main()
以下是客户代码:
^{pr2}$