粗谈pcap_next_ex()

时间:2022-12-22 05:57:55
 

pcap_next_ex(pcap_t* p,struct pcap_pkthdr** pkt_header,const u_char** pkt_data)

功能: 从interface或离线记录文件获取一个报文

参数: p: 已打开的捕捉实例的描述符

pkt_header: 报文头

pkt_data: 报文内容

返回值: 1: 成功

0: 获取报文超时

-1: 发生错误

-2: 获取到离线记录文件的最后一个报文

pkt_data则是我们需要的报文内容,通过试验,在调用pcap_next_ex()之后系统会分配一部分内存(大概有500KB左右)供其使用,返回的报文内容则存放在这部分内存中,不过这只是暂存,不可能将大量的数据内容放在这一部分内存中的;通过调试可以看到,pcap_next_ex()将返回的报文内容线型的存储在这一部分内存中,当数据量占满了这部分内存后,会充开始位置覆盖原有数据,所以需要保存报文内容需要写入本地文件或另外开辟内存空间存储!