由于不支持 IP_PKTINFO在python(用于IPv4)中,生产环境中是否没有多宿主UDP python服务器?
如果有(我希望会有),他们如何处理将响应 UDP 数据包发送到接收请求的接口(interface)的问题!
<小时/>编辑以进行澄清
假设我有一个具有多个接口(interface)的 UDP 服务器(此处考虑 2 个接口(interface)),每个接口(interface)的 IP 分别为 172.217.163.68 和 172.217.163.69。服务器在 0.0.0.0 上有套接字绑定(bind)调用。现在,如果请求数据包来自 172.217.163.68,服务器会对其进行处理,形成响应数据包,然后在哪个接口(interface)上发送?它无法知道请求数据包到达的接口(interface),因此它无法填写发送接口(interface)IP。这是因为Python中不支持IP_PKTINFO。
还应该注意的是,我们不能在这里使用默认路由。如果使用默认路由,那么从客户端的角度来看,它向172.217.163.68发送了请求,但得到了172.217.163.69的响应,这显然是错误的。
最佳答案
UDP 服务器使用 recvfrom和 sendto获取源 IP 地址并发回响应:
接收:消息,地址 = socket.recvfrom(1024)
发送:socket.sendto(消息,地址)
您可以在this question中看到Python中的UDP服务器示例
关于python - 多宿主 UDP Python 服务器监听 0.0.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55221739/