【发布时间】:2020-10-28 15:44:02
【问题描述】:
我有一个侦听所有 IPv4 地址的 UDP 服务器,即 INADDR_ANY 或 0.0.0.0。对于从客户端接收到的每个数据包,它都应使用接收数据包的确切网络接口的 IP 地址进行响应。从概念上讲,它应该将数据包的源地址放入数据包的有效负载中。
在使用sendto() 时,我如何知道哪个源地址将用于向特定目标地址发送数据包?我是否需要手动枚举所有网络接口,将网络前缀(或子网掩码的 IPv4 地址)与目标地址匹配?如果是这样,怎么做?我会对涉及 Boost.Asio 的跨平台解决方案感兴趣,但如果这不可能,我需要使用 Winsock。将来我可能也需要针对 Linux 的解决方案。
【问题讨论】:
标签: sockets boost-asio winsock