2010-11-25 6 views
1

입니까? pcap의 유효 읽기 시간 제한이 -1입니까?pcap에 대한 읽기 시간 초과 값이

pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);에서 to_ms를 -1로 설정하면 패킷이 감지되었을 때 즉각 0으로 설정된다는 사실을 알았습니다. 그것은 제로 타임 아웃을 설정하는 방법이 있다는 것을 이해합니다. 그렇다면 -1을 무한대로, 0을 0으로 만드는 것은 어떻습니까? 그것은 더 논리적 일 것입니다. 또한, 나는 pcap에 -1의 to_ms 값이 어떤 영향을 미치는지 확인할 방법이 없습니다.

그래서 -1은 유효한 시간 초과 값입니까? 그렇다면 어떤 영향을 미칩니 까? 그렇지 않다면 감지 타임 아웃을 0으로 설정하는 방법이 있습니까?

답변

1

귀하의 설명이 의미가 있다고 생각하지 않습니다.

읽을 수있는 데이터가 없을 경우 읽기 호출 시간 제한은이어야합니다. 귀하의 경우 패킷이 이 아닌 경우이 수신되면 시간 초과는 전화가 대기하기 전과 돌아 오는 시간을 제어해야합니다. 데이터가 수신되면 시간 제한은 중요하지 않습니다. 그 다음에 통화가 데이터를 감지 (및 읽는)하자마자 반환해야하므로 사용자가 요구하는 것입니다. reading the code에서

, PCAP에 부정적인 타임 아웃이 모든에서 기다릴 만들지 만, 데이터를 사용할 수없는 경우 대신 직접 돌아갑니다 "비 차단 모드"를 의미 보인다.

+0

오해. 이 경우 읽기 시간 제한은 맨 페이지에서 인용 할 패킷이있는 곳에서 적용됩니다.'읽기 시간 초과는 패킷이 보일 때 즉시 반환되는 것은 아니지만 어느 정도 기다리는 읽기 시간을 설정하는 데 사용됩니다 한 번의 동작으로 더 많은 패킷이 도착하고 OS 커널에서 여러 개의 패킷을 읽을 수있는 시간을 줄여줍니다. 따라서 읽기 타임 아웃은 패킷을 감지 한 후에 다시 지연되도록합니다. – Benubird

+0

코드를 보면 @unwind에 동의합니다. – jrwren