免责声明:这是针对家庭作业的,但问题不在于作业,而在于一般语法怪异。
我试图在一个更大的程序的上下文中使用 libpcap,但是当我尝试获取每个数据包的数据包头和数据时,gcc 抱怨 pcap_next_ex 的第三个参数是不兼容的指针类型。这是一些示例代码,可以查看我在说什么:
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
int main()
{
pcap_t *pcap;
char pcapErr[PCAP_ERRBUF_SIZE];
struct pcap_pkthdr *pktHeader;
u_char *pktData;
pcap = pcap_open_offline("somefile.pcap", pcapErr);
if (pcap == NULL)
{
fprintf(stderr, "pcap_open_offline failed: %s\n", pcapErr);
exit(EXIT_FAILURE);
}
while (pcap_next_ex(pcap, &pktHeader, &pktData) == 1)
{
// do things here
}
pcap_close(pcap);
return EXIT_SUCCESS;
}
手册页表明 pcap_next_ex() 的原型是:
int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header, const u_char **pkt_data)
我传递不兼容的指针类型到底是什么?谢谢。