嗨,我是C编程方面的新手。有人能告诉我什么是errbufPCAP_ERRBUF_SIZE,pcap,pcap_t以及pcap_lookupdev()是如何工作的吗?
struct pcap_pkthdr header;
const unsigned char *packet;
char errbuf[PCAP_ERRBUF_SIZE];
char *device;
pcap_t *pcap_handle;
int i;
device = pcap_lookupdev(errbuf);发布于 2013-11-15 19:39:52
什么是errbufPCAP_ERRBUF_SIZE?
如果一些libpcap例程失败,则将错误消息放入缓冲区,以便使用libpcap的程序能够向用户报告错误。pcap_lookupdev()就是其中的一个例程;如果它返回NULL,这意味着它没有找到任何可以打开的设备,所以它将错误消息放入errbuf中。
pcap
"pcap“是一个名称,有时用于libpcap和WinPcap,或者用于它(以及其他一些代码,如Wireshark)所写的捕获文件格式。
pcap_t
pcap_t是一个句柄,用于从网络接口读取数据包,或者从包含数据包的pcap文件(或者,在较新版本的libpcap,pcap中)读取数据包。libpcap/WinPcap例程(如pcap_open_live()和pcap_open_offline() )返回一个pcap_t,您可以从其中读取带有诸如pcap_loop()、pcap_dispatch()、pcap_next()和pcap_next_ex()等例程的数据包;在较新版本的libpcap (但还没有在WinPcap中)中,您还可以通过调用pcap_create()获得一个pcap_t,在pcap_t上设置各种选项,然后“激活”它,使用pcap_activate()捕获它。
他们所说的设备是什么意思?
通常,设备是一个网络接口,例如Linux机器上的eth0或wlan0,Mac上的en0或en1,BSD、Solaris、HP-UX、AIX等上的其他各种名称,或者在Windows上的各种有点神秘的字符串。在某些平台上,libpcap还可以让您捕获机器USB接口上的通信量(原始USB流量--您也可以在USB网络接口上捕获流量,但它们就像普通的网络接口一样)。
https://stackoverflow.com/questions/20003690
复制相似问题