【发布时间】:2022-12-08 09:57:41
【问题描述】:
我正在尝试用 C++ 编写一个小型 pcap 程序,但出现上述错误。 下面是我写的程序。
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<pcap.h>
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
{
cout<<"Got a Packet"<<endl;
}
int main()
{
pcap_t *handle;
char errbuf[PCAP_ERRUF_SIZE];
struct bpf_program fp;
char filter_exp[] = "icmp";
bpf_u_int32 net;
//Step 1
handle = pcap_open_live("enp0se", BUFSIZ, 1, 1000, errbuf);
//Step 2
pcap-compile(handle, &fp, filter_exp, 0, net);
pcap_setfilter(handle, &fp);
//Step 3
pcap_loop(handle, -1, got_packet, NULL);
pcap_close(handle);
return 0;
}
【问题讨论】:
-
常见问题适用,1) 您的计算机上是否有文件 pcap.h? 2)如果你告诉你的编译器在哪里可以找到那个文件?通常编译器不会自动查找头文件。如果您使用非标准头文件,您通常必须告诉编译器在哪里可以找到它们,这不会自动发生。
-
我想我的系统中没有它,我认为它会像其他头文件一样被包含在内,比如 stdio.h 请帮助我这样做。
-
pcap.h 是非标准的。下面的答案涵盖了您需要做的事情。
-
还有一点
<iostream.h>也是不规范的。正确的头文件是<iostream>。但是你似乎没有使用它,所以它可以被删除。 -
您需要安装
libpcap库,它是libpcap-dev或libpcap-devel,具体取决于您的 Linux 发行版。