删除与接口关联的组播组

时间:2017-10-06 21:55:46

标签: c# multicast netsh

使用函数的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#上做些什么吗?

1 个答案:

答案 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);