pcap_loop()的原型如下: int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user) 第一个参数是我们的会话句柄。接下来是一个整数,它告诉pcap_loop()在返回之前它应该嗅探多少个数据包(负值意味着它应该嗅探直到发生错误)。第三个参数是回调函数的名称(只是函数名,没有括号)。最后一个参...
1.pcap_dispatch和pcap_loop使用回调函数结构都一样: static void process_packet(u_char *user, struct pcap_pkthdr *pHeadr, u_char *pkt_data) { // 如果process_packet定义在类中,那么必须以static修饰 } 1. 2. 2.pcap_dispatch和pcap_loop函数参数都一样: int pkts_read = -1; // 让libpcap一直...
int pcap_loop(pcap_t *p, intcnt, pcap_handlercallback, u_char *user); 描述 pcap_loop子例程读取和处理包。 可以调用此子例程来读取和处理存储在先前保存的包捕获数据文件 (称为savefile) 中的包。 子例程还可以读取和处理正在实时捕获的包。
简单来讲就是说,pcap_loop()只有当cnt数据包被捕获时才会返回,即它会在一小段时间内阻塞网络的利用。pcap_loop()函数的第三个参数很重要,它是一个回调函数的函数指针,即pcap_loop()函数返回时会自动调用这个回调函数。这个回调函数的参数类型是规定好的:...
参数: p:pcap_open_live() 返回的 pcap_t 类型的指针 fp:pcap_compile() 的第二个参数 返回值: 成功返回 0,失败返回 -1 这个编译应用过程,有点类似于,我们写一个 C 程序,先编译,后运行的过程。 应用完过滤表达式之后我们便可以使用 pcap_loop() 或 pcap_next() 等抓包函数来抓包了。
0/*优化参数*/,net_ip/*网络地址*/); //编译过滤规则 pcap_setfilter(pcap_handle,/*Libpcap句柄*/&bpf_filter/*BPF过滤规则*/); //设置过滤规则 pack_loop(pcap_handler,/*Libpcap句柄*/10,/*捕获数据包的个数*/,packet_callback/*回调函数*/NULL/*传递给回调函数的参数*/); /*注册回调...
这里主要是想说明下回调函数的各个参数,顺便讲下pcap_loop int pcap_loop ( pcap_t * p, int cnt, pcap_handler callback, u_char * user ) pcap_t结构对开发者是不透明的,一般是由pcap_open返回,可以认为是抓包的句柄。cnt表示抓到cnt个包后loop结束,callback就是处理包的回调函数了。user只是用来描述这...
(1)pcap_loop()循环进行数据包的抓取: 函数原型如下: 1typedefvoid(*pcap_handler)(u_char *user,conststructpcap_pkthdr *h,2constu_char *bytes);34intpcap_loop(pcap_t *p,intcnt, pcap_handler callback, u_char *user);5/*参数说明:6功能:循环捕获数据包,不会响应pcap_open_live()函数设置的超时...