1

-1 是 pcap 的有效读取超时吗?

有人告诉我,将 to_ms 设置为 -1pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);会导致它在检测到数据包时立即返回 - 实际上是零超时。有一些方法可以设置零超时是很有意义的,但是为什么不让 -1 是无限的,而 0 是 0 呢?那会更合乎逻辑。此外,我无法以任何方式确认 -1 的 to_ms 值对 pcap 有什么影响。

那么,-1 是一个有效的超时值吗?如果有,它有什么作用?如果没有,有没有办法将检测超时设置为零?

4

1 回答 1

1

我觉得你的解释没有道理。

只有在没有数据可供读取的情况下,读取调用的超时才会生效。在您的情况下,如果从未收到数据包,则超时应控制呼叫等待多长时间,然后再返回。如果接收到数据,则超时无关紧要,因为调用必须在检测到(并读取)数据后立即返回,这就是您要求它做的事情。

阅读代码来看,pcap 中的负超时似乎意味着“非阻塞模式”,这将使它根本不等待,而是在没有可用数据时直接返回。

于 2010-11-25T10:02:42.807 回答