таймаут нулевого чтения для pcap - PullRequest
1 голос
/ 25 ноября 2010

Является ли -1 допустимым тайм-аутом чтения для pcap?

Кто-то мне сказал, что установка to_ms в -1 в pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf); заставляет его немедленно возвращаться при обнаружении пакета - фактически нулевое время ожидания.Имеет большой смысл, что есть какой-то способ установить нулевое время ожидания, но тогда почему бы не сделать -1 бесконечным, а 0 - 0?Это было бы более логичным.Кроме того, я никак не мог подтвердить, как значение to_ms, равное -1, влияет на pcap.

Итак, является ли -1 допустимым значением времени ожидания?Если да, то какой эффект это имеет?Если нет, есть ли способ установить тайм-аут обнаружения на ноль?

1 Ответ

1 голос
/ 25 ноября 2010

Не думаю, что ваше объяснение имеет смысл.

Тайм-аут для вызова на чтение должен войти в игру, только если нет данных для чтения . В вашем случае, если пакет никогда не получен, то тайм-аут должен контролировать, как долго вызов будет ждать до возврата. Если данные получены, тайм-аут не имеет значения, с тех пор вызов должен вернуться, как только он обнаружит (и прочитает) данные, вот что вы просите сделать.

Начиная с чтения кода , кажется, что отрицательное время ожидания в pcap означает «неблокирующий режим», который заставит вообще не ждать , а вместо этого напрямую вернуться, если нет данные доступны.

...