C++编程->pcap文件读取源码

来源:互联网 发布:联通网络如何报修 编辑:程序博客网 时间:2024/06/08 18:03


#include <stdio.h>#include <pcap.h>#define LINE_LEN 16void dispatcher_handler(u_char *, const struct pcap_pkthdr *, const u_char *);int main(int argc, char **argv){pcap_t *fp;char errbuf[PCAP_ERRBUF_SIZE];//输入要读取的pcap文件if(argc != 2){printf("usage: %s filename", argv[0]);return -1;}//打开pcap文件/* Open the capture file */if ((fp = pcap_open_offline(argv[1],// name of the device errbuf// error buffer )) == NULL){fprintf(stderr,"\nUnable to open the file %s.\n", argv[1]);return -1;}//打印出pcap文件里面的所有包数据/* read and dispatch packets until EOF is reached */pcap_loop(fp, 0, dispatcher_handler, NULL);//关闭打开pcap文件的指针pcap_close(fp);return 0;}void dispatcher_handler(u_char *temp1, const struct pcap_pkthdr *header, const u_char *pkt_data){u_int i=0;/* * unused variable */(VOID*)temp1;//打印读取的数据包的时间戳和包长度/* print pkt timestamp and pkt len */printf("%ld:%ld (%ld)\n", header->ts.tv_sec, header->ts.tv_usec, header->len);//打印出数据包的数据/* Print the packet */for (i=1; (i < header->caplen + 1 ) ; i++){printf("%.2x ", pkt_data[i-1]);if ( (i % LINE_LEN) == 0) printf("\n");}printf("\n\n");}


原创粉丝点击