-1是pcap的有效读取超时吗?
有人告诉我,在pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);
中将to_ms设置为-1会导致它在检测到数据包时立即返回 - 实际上是零超时。很有意义的是,有一些方法来设置零超时,但为什么不使-1为无穷大而0为0?那更符合逻辑。另外,我无法以任何方式确认-1的to_ms值对pcap的影响。
那么,-1是一个有效的超时值吗?如果是这样,它有什么影响?如果没有,有没有办法将检测超时设置为零?
答案 0 :(得分:1)
我认为你的解释没有意义。
如果没有数据可供读取,则只应播放读取调用的超时。在您的情况下,如果数据包从未收到,那么超时应该控制呼叫在等待之前的等待时间,然后再返回。如果收到数据,则超时无关紧要,因为一旦检测到(并读取)数据,调用必须立即返回,这就是您要求它做的事情。
从reading the code开始,pcap中的负超时似乎意味着“非阻塞模式”,这将使不等待,而是在没有数据可用的情况下直接返回