我試圖使用pcap_next
但此行我的程序停止:線程1:EXC_BAD_ACCESS(代碼= 1,地址= 0x0),並且pcap_next
packet = pcap_next([self pcap_socket], hdr);
與錯誤:
thread1: EXC_BAD_ACCESS (code=1, address=0x0)
這裏是我的代碼:
-(const u_char*)readOnPcapDescriptor
{
if([self pcap_is_open]) {
struct pcap_pkthdr *hdr = NULL;
const u_char *packet;
// read for the next packet
packet = pcap_next([self pcap_socket], hdr);
if(packet==NULL)
return NULL;
else
return packet;
}
printf("NOK\nOpen descriptor First!\n\n");
exit(1);
}
我不明白我的錯誤在哪裏。該pcap_t描述符是在這之前開:
pcap_t * open_socket = pcap_open_live(if_name,BUFSIZ,1,1,pcap_errbuf);
和受影響的實例變量:
[self setPcap_socket:open_socket];
你確認'pcap_open_live'實際返回非NULL嗎? –
是的,我正在使用pcap描述符發送pcap_inject數據包,然後用pcap_next開始讀取 – blackndoor