我在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)
现在我的问题是,我如何能够同时连接多个“客户端”并使用相同的端口收听?有没有办法看到数据来自哪个客户端?
答案 0 :(得分:1)
请参阅socket.recvfrom() - 返回值为一对(string, address)
,其中address
是发件人的地址,您可以将其传递给后续的socket.sendto()
来电。
由于UDP connect()
没有真正设置任何连接,您仍然可以从任何地方发送和接收;它真正做的就是在内部设置套接字的默认目标地址,让您使用send()
或write()
,而不是每次都明确传递地址。