如何使用多播轮询

时间:2012-05-29 22:21:52

标签: network-programming multicast

我过去曾使用过poll,其中服务器有多个连接的文件描述符,但在一个人想要收听各种多播组的情况下如何使用poll?从我的理解,这将需要多个upd套接字想要在加入一个组之后调用recvfrom但是从不连接这些套接字。如果只是轮询这些描述符,然后在事件触发时调用recvfrom?网上有这个简单的小例子吗?

由于

1 个答案:

答案 0 :(得分:2)

轮询完全相同 - 您等待几个套接字中的任何一个变得可读,找出哪个是,然后调用recv(2)或诸如此类的东西。与TCP的不同之处在于,UDP套接字上的每次读取都只对一个数据报进行了解码,因此这样做更容易。

您投入到投票集中的套接字通常设置为非阻止,在这种情况下,您需要处理来自EWOULDBLOCK的{​​{1}}错误。

还要记住UDP不可靠,所以如果你没有足够快地消耗这些数据报,它们会填充套接字接收缓冲区并且内核开始丢弃它们。