免责声明:这是一个家庭作业,但问题不在于作业,只是一般语法怪异.
我试图在一个更大的程序的上下文中使用libpcap,但是当我尝试获取每个数据包的数据包头和数据时,gcc抱怨pcap_next_ex的第三个参数是一个不兼容的指针类型.这是一些示例代码,看看我在说什么:
#include#include #include 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)
我传递的是一种不兼容的指针类型到底是怎么回事?谢谢.
将pktData的声明更改为:
const u_char *pktData;
和gcc应该停止抱怨.