C# UDPClient 加入多播组。本地地址是什么?

C# UDPClient JoinMulticastGroup. What is the local address?

我是网络配置方面的新手,我正在尝试理解以下代码。

    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 文档中没有任何线索:https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.udpclient.joinmulticastgroup?view=netframework-4.8#System_Net_Sockets_UdpClient_JoinMulticastGroup_System_Net_IPAddress_System_Net_IPAddress_

Server.JoinMulticastGroup(multicastIp, localIp); 

在 IPv4 中,可以提供 localIp 作为查找物理接口的方式,如果您不选择本地接口或 select 通配符 INADDR_ANY(0.0.0.0),系统将进入决定它将在哪个接口上加入组,这可能不是您在具有许多物理接口的系统上想要的。

OS 只允许在多播规范中为非常狭窄的事情创建自己的规则,即在这种情况下 selecting 默认接口,因此您可以依赖任何系统文档发现有助于确定哪些步骤采取哪些输入,例如:linux's tldp documentation.