2013-05-20 36 views
0

我使用连接到多个“客户端”并侦听的Python守护进程。Python:多个连接

重要提示:所有客户端的守护进程端口必须相同。

class UDPReader(asyncore.dispatcher): 
     def __init__(self, local, remote, parser): 
       asyncore.dispatcher.__init__(self) 
       self.parser = parser 
       self.create_socket(socket.AF_INET, socket.SOCK_DGRAM) 
       self.bind(local) 
       self.connect(remote) 

我的问题是现在,我怎么能同时连接到多个“客户端”,并用相同的端口在那里听呢?有没有办法看到数据来自哪个客户端?

+1

UDP不保存连接信息,它更像是一个开放的门,向任何听取并接收任何知道哪扇门打开的人的信息的人发出信息。 – BlackVegetable

回答

1

socket.recvfrom() - 返回值是一对(string, address)其中address是发送者和东西,你可以传递给后续socket.sendto()呼叫的地址。

对于UDP connect()没有真正建立任何连接,您仍然可以在任何地方发送和接收;它所做的只是在内部为套接字设置默认的目标地址,并让您使用send()write()而不是每次都明确地传递地址。