C# C UDPClient联合多播组。当地地址是什么?

C# C UDPClient联合多播组。当地地址是什么?,c#,udp,multicast,udpclient,C#,Udp,Multicast,Udpclient,我不熟悉这个网络配置,我正在尝试理解下面的代码 var Server = new UdpClient(); var multicastIp = IPAddress.Parse(_connectionParams[0]); IPAddress localIp; if (IPAddress.TryParse(_connectionParams[1], out localIp)) Server.JoinMulticastGroup(multicastIp,

我不熟悉这个网络配置,我正在尝试理解下面的代码

    var Server = new UdpClient();
    var multicastIp = IPAddress.Parse(_connectionParams[0]);
    IPAddress localIp;
    if (IPAddress.TryParse(_connectionParams[1], out localIp))
      Server.JoinMulticastGroup(multicastIp, localIp);
    else
      Server.JoinMulticastGroup(multicastIp);
    var endPoint = new IPEndPoint(multicastIp, int.Parse(_connectionParams[2]));
根据我的理解,多播是通过路由器将数据发送到多播ip,如233.7.6.5,接收器可能需要加入组来接收数据

    Server.JoinMulticastGroup(multicastIp, localIp); 
在上面这一行,localIp在这里有什么用途?提供localip是否将数据单播到特定ip?或者其他我需要理解的事情

Microsoft文档中没有任何线索:

在IPv4中,可以提供localIp作为查找物理接口的方式,如果您不选择本地接口或在Dr_ANY0.0.0.0中选择通配符,系统将决定它将在哪些接口上加入组,而在具有许多物理接口的系统上,哪些接口可能不是您想要的


操作系统只允许在多播规范中为非常狭窄的内容创建自己的规则,即在本例中选择默认接口,因此您可以依靠您发现的任何系统文档来确定采取哪些步骤和输入,例如:。

连接需要两个点—源和目标。所以您需要一个本地虚拟端点作为源。@jdweng本地虚拟端点在这里重要吗?无论如何,数据流都是通过多播的。你能在这方面指导我吗?是的,你需要终点。多播通常在一个子网内,除非在路由器上设置了“允许多播”属性,否则路由器不会转发多播。请参阅msdn:请参阅msdn:。物理接口意味着在LAN网络上分配给机器的实际ip。如果有多个netwoek适配器,则选择正确的适配器会有所帮助。正当我将从ipconfig cmd获得一些信息。如果vpn已连接,则会有多个nw适配器,提供localip将有助于识别正确的nw适配器。如果我错了,请纠正我。是的,有些操作系统还有相当数量的接口别名,可以挂起额外的IP。。理想情况下,您希望主ip拥有以太网地址或vpn中的隧道,并决定在等上发送igmp数据包。。操作系统应该管理何时从外部指示放弃的成员资格等,因此,呼叫不完全是与网络上看到的管理数据包的1对1,因为您可以在一台主机上订阅多个套接字,等等。@Gopichandar这个例子使用迂腐的方式来设置它,用一个例子和一个引用来找到它,然后是ipconfig的代码替代品,以及使用nw索引而不是ips的可能性,这更清楚,并且是如何通过v6中的作用域来完成的。
Server.JoinMulticastGroup(multicastIp, localIp);