使用函数的 C# 应用程序:clientUDP.joinMulticastGroup(MulticastGroup) 我可以将多播地址添加到特定接口。问题是:每次运行我的应用程序时,我都会向网络接口添加一个多播组,但是当应用程序结束时它保持加入状态,因此如果我再次运行切换接口的应用程序,它不起作用,那么我需要更改多播地址并再次...再。。。通过这种方式,我将大量组播地址关联到每个接口。如果我运行:
网中接口IP展示加盟 它显示了我加入多播的界面
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# 上做的事情?
我的代码(它仅在我第一次启动应用程序时才有效,而不是第二次运行时我需要更改多播地址):
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);