我需要使用本地 C++ 代码在具有多个网络适配器的 Windows 机器上进行 UDP 广播(我认为这应该是理想的多播)。
目前,我在套接字上设置 SO_BROADCAST 套接字选项以允许广播,然后发送到 INADDR_BROADCAST 地址 (255.255.255.255)。这在具有多个网络适配器的机器上并不可靠。
我一直在四处寻找,并在 Stack Overflow 上发现了很多关于此的问题。据我所知,最好的方法似乎是找出每个网络适配器的广播 IP,然后遍历那些发送到每个网络适配器的 IP。
因此,例如,如果我的机器有一个 IP 地址为 10.0.0.x 的网络适配器和另一个 IP 地址为 192.168.1.x 的网络适配器,那么我需要将消息发送到 10.0.0.255 和 192.168.1.255。
尽管我查看了所有问题/答案,但我无法将这些点连接起来以获取上述地址列表。
谁能指出我正确的方向?例如,我找到了一些使用 GetAdaptersAddresses 枚举 IP 地址的示例代码,但我看不到在哪里可以获得每个地址的子网掩码。如果没有子网掩码,我无法确定广播地址。我需要 IP 地址列表和每个地址的子网掩码,这样我就可以形成要发送到的广播地址列表。