python - 多宿主 UDP Python 服务器监听 0.0.0.0

标签 python server network-programming udp

由于不支持 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 服务器使用 recvfromsendto获取源 IP 地址并发回响应:

接收:消息,地址 = socket.recvfrom(1024)

发送:socket.sendto(消息,地址)

您可以在this question中看到Python中的UDP服务器示例

关于python - 多宿主 UDP Python 服务器监听 0.0.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55221739/

相关文章:

python - 在 Python 中连接两个列表时内部会发生什么?

ios - 无法在 iOS 上的 Swift 中将 base64 字符串发送到服务器

php - 收到 PHP 警告 : Module '[module name]' already loaded in Unknown on line 0

python - 橙2.7安装 "UnsatisfiableError"

javascript - 从下拉菜单中逐页阅读 - 在第二页找不到下拉菜单

在使用标准输入的程序中使用行版的 Python 调试器

c# - 部分代码在本地主机上运行正常但在服务器上运行错误(iis)

linux - getnameinfo 返回带有 "%<interface>"的数字名称

linux - TC : attaching many netems to an interface

java - 一个 java UDP 套接字可以处理多少个请求?