我必须听一段“无连接UDP多播”。我有服务器的IP和端口。我没有任何其他信息。我怎样才能做到这一点?
我做了一些搜索,并找到了一些提示喜欢如下:
我还读过这有帮助的文章。但这篇文章是针对winsockets的。我知道这不应该对理论造成很大的影响,在执行方面我仍然很困惑。例如,您将看到在许多地方,他们建议必须调用sendto(),然后使用为recvfrom返回的sockaddr。不过,我不明白为何会有人提出这个建议。我们还不知道地址和端口吗?它只是为了避免手工填充结构,还是关于sockaddr的其他参数?
此外,在同一篇文章中,他们在调用套接字时使用了以下标志IPPROTO_UDP:
SOCKET sUDPSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);同样也适用于linux吗?我在哪里可以找到这样的信息?
我正在寻找关于这个问题的可靠的参考资料。我在googled上搜索了很多,但是找不到任何权威的文章或博客在Linux上做。
发布于 2014-07-05 22:10:56
你说过
我必须听一个无连接的UDP多播。
在你的评论中,你澄清了你问题的含义:
无连接意味着我不必订阅任何多播组。
那是不可能的。计算机接收多播通信量的唯一方法是由路由器将其转发给您,而路由器只在存在多播订阅时才这样做。考虑另一种选择:即使没有订阅,每个路由器都应该转发多播数据包?但是,所有的组播数据包都会被淹没在整个网络中,这将超过许多链路的可用带宽,从而有效地造成拒绝服务攻击。
如果您只想在本地网络上进行自动发现,则需要广播,而不是多播。广播是用与单播UDP相同的功能完成的,不需要连接。但是,您必须使用SO_BROADCAST启用setsockopt选项。
https://stackoverflow.com/questions/24590474
复制相似问题