libpcap的一些主要函数和结构介绍

本文详细介绍了libpcap库中的重要数据结构,如ADAPTER, PACKET, NetType等,以及核心函数,包括pcap_findalldevs, pcap_open_live, pcap_close等,涉及网络设备的枚举、包捕获、过滤规则设置等功能。同时,阐述了错误处理机制、回调函数的使用,并提及了特定平台的扩展函数。" 125535131,10912945,R语言ggplot2详解:折线图与自定义图例位置,"['R语言', '数据可视化', 'ggplot2', '图形语法', '统计图形']
摘要由CSDN通过智能技术生成

一)

数据结构

•1) typedef struct _ADAPTER ADAPTER //描述一个网络适配器;

•2) typedef struct _PACKET PACKET //描述一组网络数据报的结构;

•3) typedef struct NetType NetType //描述网络类型的数据结构;

•4) typedef struct npf_if_addr npf_if_addr //描述一个网络适配器的ip地址;

•5) struct bpf_hdr //数据报头部;

•6) struct bpf_stat //当前捕获数据报的统计信息。

函数

1)int pcap_findalldevs ( pcap_if_t ** alldevsp, char * errbuf)

功能:列出当前所有可用的网络设备(网卡)

所在头文件:pcap.h

参数说明: pcap_if_t ** alldevsp 指向pcap_if_t结构列表的指针的地址。实际使用时,声明一个pcap_if_t结构的指针(pcap_if_t * alldevsp),然后把该地址作为参数传入即可(&alldevsp)。
char * errbuf 错误缓冲区,要求长度至少为PCAP_ERRBUF_SIZE 字节

返回值: -1:出错,将会向错误缓冲中填充错误信息,错误信息为ASCII码,可以直接打印出来。

0:正确返回,可以使用alldevsp访问所有网络硬件

pcap_if的结构

Struct pcap_if {
struct pcap_if *next;
char *name;
chat *description;
struct pcap_addr address;
u_int flags;
}

也可以用pcap_if_t 代替pcap_if
2) pcap_t * pcap_open_live ( char * device, int snaplen, int promisc,int to_ms, char * errbuf );

获取一个包捕捉句柄,类似文件操作函数使用的文件句柄。
device指定网络接口设备名。
snaplen指定单包最大捕捉字节数。
promisc指定网络接口进入混杂模式。
to_ms指定毫秒级读超时,0可能代表永不超时。
errbuf包含失败原因。
如果调用失败返回NULL

3)void pcap_close ( pcap_t *p )

该函数用于关闭pcap_open_live()获取的包捕捉句柄,释放相关资源。
4int pcap_lookupnet ( char * device, bpf_u_int32 * netp, pf_u_int32 * maskp, char *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值