Python 多客户端Socket编程

Python 多客户端Socket编程,python,sockets,Python,Sockets,我正在尝试使用多个客户端的套接字为聊天服务器编写代码。但它只适用于一个客户。为什么它不适用于多个客户端 我必须用Beaglebone Black执行这个程序。我的服务器程序将在beaglebone和gcc或终端上的普通客户端上运行。所以我不能使用多线程 #SERVER import socket import sys s=socket.socket

我正在尝试使用多个客户端的套接字为聊天服务器编写代码。但它只适用于一个客户。为什么它不适用于多个客户端

我必须用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()
使用事件循环

集成在类似python的asyncio中:

或者使用提供事件循环的外部库,如libuv:


注意:您的代码不能同时为多个客户端工作,因为您在接收操作中被阻止,并且您没有处理新的接受操作。

使用线程,这将有助于@ForceBru的复制,他可能会认真对待您的建议。我不认为这是一个残忍的地方jokes@legoscia可能不是重复的,发布的代码实际上应该适用于多个客户机,但不适用于多个同时出现的客户机,这可能是OP的实际请求。