您好,我的 PC 上有 2 个网络适配器,并希望将 udp 多播发送到所选网络接口上的组 239.0.0.222 端口 9050。但它仅适用于第一个接口,在选择另一个NIC时没有发送数据。
localIP 是来自所选适配器的本地 IP
发件人代码:
IPAddress localIP = getLocalIpAddress();
IPAddress multicastaddress = IPAddress.Parse("239.0.0.222");
IPEndPoint remoteep = new IPEndPoint(multicastaddress, 9050);
UdpClient udpclient = new UdpClient(9050);
MulticastOption mcastOpt = new MulticastOption(multicastaddress,localIP);
udpclient.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOpt);
udpclient.Send(data, data.Length, remoteep);
EDIT1:
适配器本地 IP 的代码:
NetworkInterface.GetAllNetworkInterfaces()[adapterIndex].GetIPProperties().UnicastAddresses[0].Address;
EDIT2,5:
还尝试了两者都使用相同的 reuslt Wireshark 向我显示第二个适配器上多播组的正确加入
udpclient.JoinMulticastGroup(multicastaddress);
udpclient.Client.Bind(remoteep);
EDIT3:
我现在在另一台 PC 上尝试过,但同样的问题再次发生,适配器 1 运行,在所有其他 PC 上没有发送任何内容。
我尝试的另一件事是在 windows xp 配置中切换前两个适配器的顺序,然后新的第一个适配器再次工作,但新的第二个不发送任何内容。