1

我过去曾使用过轮询,其中服务器具有多个连接的文件描述符,但是在想要监听各种多播组的情况下如何使用轮询?据我了解,这将需要多个 upd 套接字想要在加入一个组后调用 recvfrom 但从不连接这些套接字.. 无论如何都要轮询这些描述符,然后在事件触发时调用 recvfrom?网络上有什么简单的小例子吗?

谢谢

4

1 回答 1

2

轮询是完全一样的——你等待你的几个套接字中的任何一个变得可读,找出哪个是可读的,然后调用recv(2)或诸如此类。与 TCP 的不同之处在于,UDP 套接字上的每次读取都会使一个数据报出队,所以这更容易一些。

您放入 poll set 的套接字通常设置为非阻塞,在这种情况下,您需要处理EWOULDBLOCK来自recv(2).

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

于 2012-05-29T22:34:37.757 回答