您好我是C编程的新手。任何人都可以告诉我什么是errbuf [PCAP_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);
答案 0 :(得分:1)
什么是errbuf [PCAP_ERRBUF_SIZE]
某些libpcap例程如果失败,会将错误消息放入缓冲区,以便使用libpcap的程序可以向用户报告错误。 pcap_lookupdev()
是其中一个惯例;如果它返回NULL
,则表示它找不到任何可以打开的设备,因此会向errbuf
发送错误消息。
PCAP
“pcap”有时用于libpcap和WinPcap,或者用于捕获文件格式(以及其他一些代码,如Wireshark)。
pcap_t
pcap_t
是一个句柄,用于从网络接口或包含数据包的pcap(或更新版本的libpcap,pcap-ng)文件中读取数据包。 libpcap / WinPcap例程(例如pcap_open_live()
和pcap_open_offline()
)返回pcap_t
,您可以从中读取包含pcap_loop()
,pcap_dispatch()
,{{1}等例程的数据包}和pcap_next()
;在较新版本的libpcap中(但尚未在WinPcap中),您也可以通过调用pcap_next_ex()
获取pcap_t
,在pcap_create()
上设置各种选项,然后“激活”它,可以使用pcap_t
进行捕获。
设备是什么意思
通常,设备是网络接口,例如Linux机器上的pcap_activate()
或eth0
,Mac上的wlan0
或en0
,BSD上的其他各种名称,Solaris,HP-UX,AIX等,或Windows上使用WinPcap的各种有些神秘的字符串。在某些平台上,libpcap还可以让您捕获计算机USB接口上的流量(原始USB流量 - 您也可以在USB网络接口上捕获,但这些就像常规网络接口一样)。