使用函数的c#应用程序:clientUDP.joinMulticastGroup(MulticastGroup)我可以将多播地址添加到特定接口。问题是:每次运行我的应用程序时,我都会向网络接口添加一个多播组,但是当应用程序结束时它仍然保持联接状态,所以如果我再次运行应用程序切换界面它会起作用,而不是我需要再次更改多播地址...再次......这样我就将大量的多播地址关联到每个接口。 如果我跑:
netsh interface ip show join 它显示了我加入多播的界面
Interfaccia 7:Wi-Fi
Ambito Referement Ultimo Address
---------- ----------- ------ ---------------------------------
0 0 SÌ 224.0.0.1
0 0 SÌ 224.0.0.3
0 0 SÌ 224.0.0.121
0 2 SÌ 224.0.0.251
0 1 SÌ 224.0.0.252
0 0 SÌ 224.0.0.253
0 0 SÌ 224.168.100.2
0 2 SÌ 224.237.248.235
0 0 SÌ 224.237.248.237
0 0 SÌ 239.255.255.3
0 3 SÌ 239.255.255.250
问题是:我如何删除从每个界面加入的这个组播? 还有一个shell命令或我可以在c#上做些什么吗?
答案 0 :(得分:0)
我的代码(它仅在我第一次启动我的应用程序时起作用,而不是我第二次运行我需要更改多播地址):
private static readonly IPAddress GroupAddress =IPAddress.Parse("224.237.248.235");
private const int GroupPort = 64555;
private static IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);
//server udp
private static UdpClient serverUDP = new UdpClient(GroupPort);
//client udp
private static UdpClient clientUDP = new UdpClient();
private static IPEndPoint remoteEpClient = null;
管理
clientUDP.JoinMulticastGroup(GroupAddress, IPAddress.Parse(LANSharingApp.umu.GetLocalIP()));
remoteEpClient = new IPEndPoint(GroupAddress, GroupPort);
serverUDP.JoinMulticastGroup(GroupAddress);
发送
clientUDP.Send(ASCIIEncoding.ASCII.GetBytes(message), ASCIIEncoding.ASCII.GetBytes(message).Length, remoteEpClient);
接收 bytes = serverUDP.Receive(ref groupEP);