我正在尝试用c语言在OSX上编写代码(如果更容易的话也可以使用objective)来确定当前机器(机器连接到的路由器)上是否启用了多播。为了做到这一点,我尝试了以下步骤:
作为网络编程的新手,我不明白如何通过发送随机数据从任何活动适配器获得响应,除非我在正在监听的机器上安装了软件。是否有某个预留的多播IP总是会引起响应,还是有更好的方法去做这件事?
发布于 2013-08-08 16:40:41
要确定机器是否有IP多播地址活动(我认为这就是“启用多播”的意思),请查看路由表,看看是否在224.0.0.0至239.255.255.255之间找到一个或多个IP v4地址。
发布于 2013-08-08 16:15:25
多播由DHCP实现,DHCP不是您的本地计算机。DHCP为连接到该DHCP服务器的多个客户端分配地址。当您制作一个多播消息时,您将它发送到这个DHCP服务器,然后DHCP服务器接收该数据包,找到映射到该多播地址的客户端,然后以一个路由器自动复制的特殊数据包发送它(因此,如果组中有2人被连接到一个路由器,而该路由器连接到另一个路由器(称为路由器2),路由器2将不会发送两个数据包,它将发送一个,然后路由器1将向其客户端发送两个副本。这样做的目的是为了每次都加快速度,而不是发送重复的数据)。就客户端而言,客户端不是为了允许多播而“设置”,而是由路由器设置它们,其余的对客户端是透明的。如果客户端连接到多播组,则必须查看DHCP服务器是否创建了多播组,然后从映射到多播组的IP地址中查找计算机名称。
通过监听所有活动适配器,您只会得到数据包,这些数据包不会告诉您它在多播网络中的作用,因为它们看起来与其他数据包类似(因为路由器将在您看到数据包之前将多播地址更改为您的ip地址)。这就是组播的美妙之处。
https://stackoverflow.com/questions/18130587
复制相似问题