我有三个网络接口(在我的Window 7下)
192.168.0.2 - real network card (interface id: 10)
192.168.180.1 - vmware adapter 1 (interface id: 21)
192.168.139.1 - vmware adapter 2 (interface id: 22)
我有UDP套接字(AF_INET),它没有通过绑定调用绑定到任何地址。
我尝试将数据报发送到239.255.255.250。正如我在Wireshark中看到的,只有192.168.139.1源地址用于通过192.168.139.0/24网络发送数据报。
我想我需要告诉winsock它必须从哪个接口发送数据报,并尝试调用setsockopt:
UINT adapterId = 10;
setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, (char*)&adapterId, sizeof(adapterId));
但我在这里收到了10049(WSAEADDRNOTAVAIL)错误。
我如何通过我的真实网络或通过我的多宿主机的所有网络发送数据报?
很久以前,我的代码(但没有setsockopt调用)在WinXP下运行良好,但我记不清,系统有一个或多个网络适配器。