ALL,
这里的文档介绍了两种不同的功能。
pcap_next((调用pcap,而pcap_next_ex((调用的是pcapng格式吗?或者这两个函数都可以读取两种格式?
页面上没有显示。
我有一个解析pcap文件并使用前一个调用的代码,我只是想知道只检查pcapng文件并使用后一个调用是否足够。
TIA!!
当pcap_next_ex((用于pcapng格式时,pcap_next((是否调用pcap?
否。pcap_next()
适用于那些不需要检查错误的应用程序,pcap_next_ex()
适用于那些需要检查的应用程序
pcap_next_ex()
如果读取数据包没有问题,则返回1;如果从实时捕获读取数据包并且数据包缓冲区超时过期,则返回0;如果在读取数据包时发生错误,则返回PCAP_ERROR
;如果从"保存文件"读取数据包且没有更多数据包可从保存文件读取,则返回PCAP_ERROR_BREAK
。如果返回PCAP_ERROR
,则可以使用p作为参数来调用pcap_geterr(3PCAP(或pcap_perror(3PCAP。
pcap_next()
在成功时返回指向分组数据的指针并且如果发生错误则返回NULL
,或者如果没有从实时捕获中读取任何数据包(例如,如果它们因为没有通过数据包过滤器而被丢弃,或者如果在支持在任何数据包到达之前开始的数据包缓冲区超时的平台上,该超时在任何包到达之前过期,或者如果捕获设备的文件描述符处于非阻塞模式并且没有数据包可供读取(,或者如果在"0"中没有更多的分组可用;保存文件"不幸的是,无法确定是否发生了错误。
您应该使用pcap_next_ex()
。
或者这两个函数都可以读取两种格式?
是。(pcap_next_ex()
是在libpcap读取pcapng文件之前添加的。(
我有一个代码可以解析pcap文件并使用前一个调用,我只是想知道只检查pcapng文件并使用后一个调用是否足够。
无论文件是pcap还是pcapng文件,只要使用pcap_next_ex()
就足够了。