我正在尝试使用多个客户端的套接字为聊天服务器编写代码。但它仅适用于单个客户。为什么它不适用于多个客户端?
我必须使用 Beaglebone Black 执行此程序。我的服务器程序将在 beaglebone 上运行,普通客户端在 gcc 或终端上运行。所以我不能使用多线程。
#SERVER
import socket
import sys
s=socket.socket()
s.bind(("127.0.0.1",9998))
s.listen(10)
while True:
sc,address = s.accept()
print address
while True:
msg = sc.recv(1024)
if not msg:break
print "Client says:",msg
reply = raw_input("enter the msg::")
sc.send(reply)
sc.close()
s.close()
#CLIENT
import socket
import sys
s= socket.socket()
s.connect(("127.0.0.1",9998))
while (1):
msg = raw_input("enter the msg")
s.send(msg)
reply = s.recv(1024)
print "Server says::",reply
s.close()
最佳答案
使用事件循环。
像asyncio一样集成在python中:Echo server example
或者使用提供事件循环的外部库,如 libuv: Echo server example .
注意:您的代码无法同时为多个客户端工作,因为您在接收操作中被阻止,并且您没有处理新的接受操作。
关于python - 多个客户端的套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29538063/