gpt4 book ai didi

c++ - 在 Windows 上使用 native C++ 在具有多个网络适配器的机器上进行 UDP 广播

转载 作者:可可西里 更新时间:2023-11-01 11:08:26 26 4
gpt4 key购买 nike

我需要使用 native C++ 代码在具有多个网络适配器的 Windows 机器上进行 UDP 广播(我认识到这应该是理想的多播)。

目前,我在套接字上设置 SO_BROADCAST 套接字选项以允许广播,然后发送到 INADDR_BROADCAST 地址 (255.255.255.255)。这在具有多个网络适配器的机器上不能可靠地工作。

我一直在四处搜索,并在 Stack Overflow 上发现了大量关于此的问题。据我所知,最好的方法似乎是找出每个网络适配器的广播 IP,然后循环发送给每个网络适配器。

因此,例如,如果我的机器有一个 IP 地址为 10.0.0.x 的网络适配器和另一个 IP 地址为 192.168.1.x 的网络适配器,那么我需要将消息发送到 10.0.0.255 和 192.168.1.255 .

尽管我浏览了所有的问题/答案,但我无法将这些点联系起来以获得上面的地址列表。

谁能指出我正确的方向?例如,我找到了一些使用 GetAdaptersAddresses 枚举 IP 地址的示例代码,但我看不到从哪里可以获得每个地址的子网掩码。没有子网掩码我无法确定广播地址。我需要 IP 地址列表和每个地址的子网掩码,这样我就可以形成要发送到的广播地址列表。

最佳答案

API 调用 GetAdaptersInfo 为每个网络适配器填充一个 IP_ADAPTER_INFO 结构。根据文档,地址列表中提供了掩码:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366062(v=vs.85).aspx

一旦有了 IP 地址和掩码,就可以计算出广播地址:

Calculate broadcast address from ip and subnet mask

关于c++ - 在 Windows 上使用 native C++ 在具有多个网络适配器的机器上进行 UDP 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com