Libpcap入门2

本文介绍了Libpcap库的几个重要函数,包括pcap_lookupdev、pcap_lookupnet、pcap_datalink、pcap_snapshot和pcap_stats的使用,并提供了一个简单的包打印函数eth_printer作为示例。
摘要由CSDN通过智能技术生成


2.使用进阶篇

刚才我们对程序的要求是能编译通过,能运行成功
现在我们让这个程序实用点吧

2.1 其它几个函数介绍
这几个函数的特点是简单但无关紧要

现在我们隆重退出
char * pcap_lookupdev ( char * errbuf );
这个函数就是查找本机上的网络接口设备,我机器上就返回""eth0"",
在pcap_open_live之前用,没什么意思吧,反正我是不爱用它

int pcap_lookupnet(char *, bpf_u_int32 *, bpf_u_int32 *, char *);
第一个参数就是pcap_lookupdev返回的接口名,二三参数都是32位无符号数,
分别是IP网段和掩码,最后那个参数还是ebuf

int pcap_datalink(pcap_t *);
它返回你的网络类型,如 DLT_EN10MB 就是10M以太网
让人ft的是这些常量定义不在pcap.h中,在哪?自己找找吧;-)

int pcap_snapshot(pcap_t *);
返回最长抓多少字节,就是我们在pcap_open_live中第二个参数设置的

int pcap_stats(pcap_t *, struct pcap_stat *);
计数,共抓了多少过滤掉了多少,看看struct pcap_stat的定义就明白了
struct pcap_stat {
u_int ps_recv; /* number of packets received */
u_int ps_drop; /* number of packets dropped */
u_int ps_ifdrop; /* drops by interface XXX not yet supported */
};

int pcap_major_version(pcap_t *);
int pcap_minor_version(pcap_t *);
版本号,你有用么?
我的eth_printer如下
void eth_printer(u_char * user, const struct pcap_pkthdr * h, const u_char * p)
{
printf(""I get one packet! "");
}
简单吧 :*)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值