C#UDPClient JoinMulticastGroup。什么是本地地址?

问题描述 投票:1回答:1

我是不熟悉此网络配置的人,我正试图了解以下代码。

    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_

c# udp multicast udpclient
1个回答
1
投票
Server.JoinMulticastGroup(multicastIp, localIp); 

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

仅允许操作系统在多播规范中为非常狭窄的事物创建自己的规则,即在这种情况下选择默认接口,因此,您可以依赖对系统有所帮助的任何系统文档来确定采取哪些步骤进行输入。 :linux's tldp documentation

© www.soinside.com 2019 - 2024. All rights reserved.