2010-12-17 5 views
0

私はpcapライブラリを使用していますが、私はいつもこの出力を取得する理由を私は知らない:サイズのpcapなぜ8バイトのパケット...なぜですか?

新しいパケットを:UDATA = 8 HDR = 8 PKT = 8

これはコードです:

void handle_pcap(u_char *udata, const struct pcap_pkthdr *hdr, const u_char *pkt) 
{ 
    DEBUG("DANY new packet with size: udata= %d hdr=%d pkt=%d", (int) sizeof(udata),(int) sizeof(hdr),(int) sizeof(pkt)); 
... 
stuff 
} 

と、私が使用して別のファイルに:

status = pcap_loop (pcap_obj, 
    -1  /* How many packets it should sniff for before returning (a negative value 
     means it should sniff until an error occurs (loop forever)) */, 
    handle_pcap /* Callback that will be called*/, 
    NULL /* Arguments to send to the callback (NULL is nothing) */); 

が、それは通常その出力ですか?

時々私のプログラムは、UM

+0

回答に正しいと印を付ける必要があります。 – Benubird

答えて

2

..ない時々動作しますので、私はそうは思いません。あなたは(さまざまな)ポインタのサイズを取得しています。

のサイズはsizeof(udata)です。だから、数字が疑わしいと思われる理由です。

パケットのサイズは、hdr->caplenhdr->lenです(前者はキャプチャされた長さ、後者はパケット長です)。

+0

ああ今それは意味がある、ありがとう! – cenos

6

pcap_pkthdr * hdrを調べる代わりに、ポインタのサイズを表示してパケットのサイズを表示しています。

あなたがhdr-> caplenhdr-> LENを見て、撮影したデータのサイズとパケット全体のサイズを見つけることができます。

+0

私はそれを得ました、あまりにもありがとう – cenos

関連する問題