1

-1 は pcap の有効な読み取りタイムアウトですか?

to_ms を -1 に設定するとpcap_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 に答える