多个客户端的套接字编程

时间:2015-04-09 12:07:03

标签: python sockets

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

我必须使用Beaglebone Black执行此程序。我的服务器程序将在gag或终端上的beaglebone和普通客户端上运行。所以我不能使用多线程。

    #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()

1 个答案:

答案 0 :(得分:2)

使用事件循环。

像asyncio一样集成在python中:Echo server example

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

注意:您的代码不适用于多个客户同时,因为您在接收操作中被阻止,而您没有处理新的接受操作。