如何让System.ServiceModel.DiscoveryClient使用IGMP?

时间:2016-08-29 21:19:23

标签: c# igmp

我有一个带有两个VLAN的D-Link DGS-1210-10P(10.104。和192.168。)我有一个摄像机每个网络,以及每个网络上我的计算机中的两个NIC。

在D-Link关闭IGMP后,我可以发现使用Microsoft DiscoveryClient的两个摄像头,以及一些允许我指定哪个NIC发送多播消息的自定义端点。打开IGMP后,我只看到10.104网络。

foreach (string id in getAdapterIds())
{
   DiscoveryClient dc = new DiscoveryClient(new UdpDiscoveryEndpointByNIC(DiscoveryVersion.WSDiscoveryApril2005, id));
   dc.FindProgressChanged += _real_FindProgressChanged;
   dc.FindAsync();
}

我确实在Wireshark中看到了IGMP消息(两个源都是我的计算机,目的地是正确的多播地址)

Source        Destination     Protocol Length Info
10.104.128.37 239.255.255.250 IGMPv2   60     Membership Report Group
192.168.1.1   239.255.255.250 IGMPv2   60     Membership Report Group

我的问题归结为:DiscoveryClient是否自动加入IGMP组并且应该正常工作?我怀疑我缺少一些基本的IGMP理解,或者某些D-Link路由器设置。

1 个答案:

答案 0 :(得分:0)

像往常一样,我在提问后立即找到答案:

问题是路由器上的IGMP设置不正确。

所以,

公司VLAN

1)禁用"查询器状态",因为公司交换机已经是查询器

2)启用"快速离开"

隔离的VLAN

1)启用"查询状态",because each VLAN needs a querier

2)启用"快速离开"