2014-01-13 2 views
0

, 내가 실행 파일을 실행하면이 오류를 얻을 : 나는 변경하면libpcap의 오류 pcap_open_live() : BIOCSRTIMEOUT : 다음 코드로 잘못된 인수

pcap_open_live(): gbeth0: BIOCSRTIMEOUT: Invalid argument 

:

... 
dev = pcap_lookupdev(errbuf); 
if(dev == NULL) 
{ 
    printf("%s\n",errbuf); 
    exit(1); 
} 
printf("DEV: %s\n",dev); 
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); 
if(descr == NULL) 
{ 
    printf("pcap_open_live(): %s\n",errbuf); 
    exit(1); 
} 
packet = pcap_next(descr,&hdr); 

if(packet == NULL) 
{ 
    printf("Didn't grab packet\n"); 
    exit(1); 
} 
... 

그리고 오류를

0123에

descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); 

스니퍼가이 오류와 함께 프로그램을 종료하지 않습니다. 패킷 을 가져 오지 않았으며 1을 0으로 변경하면 오류가 발생하지 않습니다. 어떻게해야합니까?

답변

1

-1은 이 아니며은 모든 플랫폼에서 pcap_open_live()에 대한 유효한 시간 초과 인수입니다.

0은 timeout 인수로 다른 플랫폼에서 다르게 동작 할 수 있으며 이 아닌이 권장됩니다.

pcap_next()은 패킷이 도착할 때까지 영원히 기다릴 수 없습니다. 시간 초과가 만료되면 NULL을 반환 할 수 있습니다. 하나 이상의 패킷을 캡처하려면 pcap_null()이 NULL을 반환하지 않을 때까지 반복하십시오.