由于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获得响应,这显然是错误的。
答案 0 :(得分:0)
UDP服务器使用recvfrom和sendto获取源IP地址并发送回响应:
接收:message, address = socket.recvfrom(1024)
发送:socket.sendto(message, address)
您可以在this question
中看到python中的示例UDP服务器