|
之前的问题解决了,确实是指针的问题,这种问题浪费大家的热情来看代码实在是很可耻。(可惜不能匿,囧rz)
考虑再开帖子麻烦,干脆就在这个帖子里写写我自己学习libpcap的一些问题,大家如果用过或者正在学习,就一起来讨论吧。
如果有比较好的问题和回帖,我会再编辑到主贴里来。
谢谢!
2009/04/21
现在我的代码已经陆陆续续成型了,我的目的是写一个抓包和发包的程序。
目前抓到包之后,我将报文长度打印出来,结果就出来一个问题。
代码如下:
……
pd = pcap_open_live (dev_name, IP_LENGTH, 0, 1000, ebuf);
……
while(1)
{
……
pcap_loop (pd, 1, My_Callback, NULL);
printf("pd->bufsize: %ld\n",ntohs(pd->bufsize));
……
}
……
在函数My_Callback(u_char *args,const struct pcap_pkthdr* pkthdr,const u_char* packet)里,将pkthdr->caplen
打印出来,结果符合我的预期,但是在代码中打印pd->bufsize确完全不对。
我的理解是这两处应该都是包的净荷长度+以太网头+IP头+CRC,不知道哪里出了问题。
有谁帮忙解释一下。 |
|