监听0.0.0.0的多宿主UDP Python服务器

时间:2019-03-18 12:46:31

标签: python server network-programming udp

由于python(对于IPv4)不支持IP_PKTINFO,生产中是否没有多宿主UDP python服务器?

如果有(并且我希望会有),他们将如何处理将响应UDP数据包发送到接收请求的接口的问题!


编辑以进行澄清

假设我有一台具有多个接口的UDP服务器(此处请考虑2),每个接口分别具有IP 172.217.163.68和172.217.163.69。服务器在0.0.0.0上有套接字绑定调用。现在,如果请求数据包出现在172.217.163.68上,服务器将对其进行处理,形成一个响应数据包,然后在哪个接口上发送?它无法得知请求数据包来自哪个接口,因此无法填充发送接口IP。这是因为python不支持IP_PKTINFO。

还应注意,此处我们无法使用默认路由。如果使用默认路由,则从客户端的角度来看,它向172.217.163.68发送了请求,但正在从172.217.163.69获得响应,这显然是错误的。

1 个答案:

答案 0 :(得分:0)

UDP服务器使用recvfromsendto获取源IP地址并发送回响应:

接收:message, address = socket.recvfrom(1024)

发送:socket.sendto(message, address)

您可以在this question

中看到python中的示例UDP服务器