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);
}