【问题标题】:C# UDPClient JoinMulticastGroup. What is the local address?C# UDPClient 加入多播组。本地地址是什么?
【发布时间】:2019-09-18 10:15:33
【问题描述】:

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

    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?或者我需要了解的其他内容。

微软文档中没有线索: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_

【问题讨论】:

  • 一个连接需要两个点,一个源和一个目标。所以你需要一个本地虚拟端点作为源。
  • @jdweng 本地虚拟端点在这里重要吗?无论如何,数据流通过多播。你能指导我吗?
  • 是的,您需要端点。多播通常在一个子网内,路由器不转发多播(除非在路由器上设置了允许多播属性)。见 msdn:见 msdn:docs.microsoft.com/en-us/dotnet/api/…

标签: c# udp multicast udpclient


【解决方案1】:
Server.JoinMulticastGroup(multicastIp, localIp); 

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

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

【讨论】:

  • 。物理接口意味着分配给 LAN 网络上机器的实际 ip。如果有多个网络适配器,则有助于选择正确的适配器。正确的?我将从 ipconfig cmd 获得的东西。如果连接了 vpn,将存在多个 nw 适配器,并且提供 localip 将有助于识别正确的 nw 适配器。如果我错了,请纠正我。
  • 是的,一些操作系统也有多少接口别名来挂起额外的 ips .. 理想情况下,您希望主 ip“拥有”以太网地址或拥有 vpn 中的隧道,并且应该决定在等上发送 igmp 数据包。操作系统应该管理何时从外部指示丢弃的成员资格等,因此调用不是纯粹的 1 对 1 与您在网络上看到的管理数据包,因为您可以订阅一台主机上有许多套接字,等等。
  • @Gopichandar 这个例子使用迂腐的方式来设置它,用一个例子和一个参考来找到它 ipconfig:docs.microsoft.com/en-us/dotnet/api/… 然后是 ipconfig docs.microsoft.com/en-us/dotnet/api/… 的替代代码和使用 nw 的可能性在 v6 中,索引而不是 ips 更清晰,以及它是如何完成的(通过范围)。
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2016-10-07
  • 2014-03-27
  • 2016-02-29
相关资源
最近更新 更多