12.3.2 pcap_dump函数

pcap_dump函数用来把一个数据包存储到函数pcap_dump_open打开的savefile文件中,其原型如下:


void pcap_dump(u_charuser,const struct pcap_pkthdrh,const u_char*sp)


该函数的参数与pcap_dispatch或pcap_loop函数的回调函数一致。如果直接调用,参数user就是pcap_dump_open函数的返回值,为pcap_dumper_t类型。

pcap_dump函数的具体实现代码如下:


void pcap_dump(u_charuser,const struct pcap_pkthdrh,const u_char*sp)

{

register FILE*f;

/设置数据包的头信息/

struct pcap_sf_pkthdr sf_hdr;

f=(FILE*)user;

sf_hdr.ts.tv_sec=h->ts.tv_sec;

sf_hdr.ts.tv_usec=h->ts.tv_usec;

sf_hdr.caplen=h->caplen;

sf_hdr.len=h->len;

/存储数据包头信息到文件/

(void)fwrite(&sf_hdr,sizeof(sf_hdr),1,f);

/存储数据包数据到文件/

(void)fwrite(sp,h->caplen,1,f);

}