是否启用了LAN组播?

时间:2013-08-08 15:53:44

标签: objective-c c networking network-programming

我正在尝试在c上编写OSX代码(如果更容易也可以使用objective-c)来确定当前机器(机器连接到的路由器)上是否启用了多播。为此,我尝试以下步骤:

  1. 打开端口并通过多播发送数据。
  2. 侦听所有活动适配器的响应。
  3. 过滤掉'loopback'适配器。
  4. 如果没有回复,则可能禁用多播。
  5. 作为网络编程的新手,我不明白如何通过发送随机数据从任何活动适配器获得响应,除非我在正在收听的计算机上安装了软件。是否保留了某个总是会引起响应的多播IP,或者是否有更好的方法来执行此操作?

2 个答案:

答案 0 :(得分:1)

要确定某台计算机的IP多播地址是否处于活动状态(我认为这意味着“已启用多播”),请查看路由表,查看是否找到224.0范围内的一个或多个IP v4地址。 0.0至239.255.255.255。

答案 1 :(得分:-1)

多播是由DHCP实现的,而不是本地计算机。 DHCP分配与连接到该DHCP服务器的多个客户端对应的地址。当您制作多播消息时,将其发送到此DHCP服务器,然后获取该数据包,找到映射到该多播地址的客户端,然后将其发送到路由器自动复制的特殊数据包中(如果您有2个人们将该组的一部分连接到1个路由器,并且该路由器连接到另一个路由器(称为路由器2),路由器2将不发送两个数据包,它将发送一个,然后路由器1将向其客户端发送两个副本。这样做的目的是加快发送时间,而不是发送重复数据)。对于客户端,客户端不是“设置”以允许多播,而是路由器设置它们,其余的对客户端是透明的。您必须查明客户端是否连接到多播组的方法是查看DHCP服务器是否已创建多播组,然后从映射到多播组的IP地址中查找计算机名称。 / p>

通过监听所有活动的适配器,除了数据包之外你不会得到任何东西,这些数据包不会告诉你它是否是多播网络的一部分,因为它们看起来像其他每个数据包(因为在您看到数据包之前,路由器会将多播地址更改为您的IP地址)。这就是多播的美妙之处。