C语言 使用 UDP 进行投票处理



我一直在(用全能的C(编写一个在UDP中监听的服务器。我有 2 个套接字侦听同一个端口(IPv4 和 IPv6(,并且使用 poll(( 来监视两个套接字。

那么,在聆听时,处理民意调查事件错误的正确方法是什么?可以接受 POLLHUP 吗?如果可能的话,必须如何处理?波勒尔也是如此

另外,有可能收到POLLRDBAND或POLLPRI?如果是这样,那么这意味着什么以及如何处理?

提前谢谢。

PS:所有问题都与UDP相关

POLLHUP 表示套接字已断开连接。由于程序正在侦听 UDP 套接字,因此不应出现此错误情况。

但是,您可能会收到 POLLERR,并且应该准备好处理它。POSIX.1-2008标准说

POLLERR
An error has occurred on the device or stream. This flag is only valid in
the revents bitmask; it shall be ignored in the events member.

错误可能是由于硬件故障造成的。您应该销毁套接字并尝试重新创建它。

与TCP不同,UDP没有将数据包标记为紧急或带外的机制,因此您不应该获得POLLRDBAND或POLLPRI。此外,这两个条件都是可选的过时扩展 - 因此不应根据 POSIX.1-2008 标准使用它们:

Obsolescent
The functionality described may be removed in a future version of this 
volume of POSIX.1-2008. Strictly Conforming POSIX Applications and Strictly 
Conforming XSI Applications shall not use obsolescent features.
XSI STREAMS
The functionality described is optional. The functionality described is also 
an extension to the ISO C standard.
如果您

发送数据包并且任何 ICMP 错误都引用该数据包(网络无法访问、主机无法访问、端口无法访问等(,则 POLLERR 可能会发生在SOCK_DGRAM上。由于返回是异步的,因此写入本身将成功。

相关内容

  • 没有找到相关文章

最新更新