2017-10-06 51 views
-1

关联的多播组与c#应用程序我可以将多播地址添加到特定接口。问题是:每次运行我的应用程序时,我都会向网络接口添加多播组,但是当应用程序结束时它仍保持连接状态,所以如果我再次运行切换接口的应用程序,它不会工作,比我需要改变组播地址,然后再一次......这样我就可以将很多组播地址关联到每个接口。 如果我运行:使用函数clientUDP.joinMulticastGroup(MulticastGroup)删除与接口

netsh接口IP显示加入 它表明我多播接口加入

Interfaccia 7:无线网络连接

 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

我发布了代码 –

回答

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

用于接收 字节= serverUDP.Receive(参考文献groupEP);