Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1569742
  • 博文数量: 884
  • 博客积分: 52280
  • 博客等级: 大将
  • 技术积分: 13060
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 09:46
文章分类

全部博文(884)

文章存档

2008年(884)

我的朋友

分类: C/C++

2008-08-06 10:04:38

下载本文示例代码
下载源代码

这么多年来,在VCKBASE上学了不少东西,却没有投过一文半稿,实有愧于心,所以今天......

相信各位都玩过SOCKET编程,用CSocket进行网络通讯非常方便,但有时想搞点底层点东西却非常麻烦,用windows的API最低也只能SOCK_RAW,顶多能看到IP层数据,如果想处理数据链路层的数据就无从下手了,幸好某天发现了winpcap东西。用了它处理底层的东西就非常方便。

winpcap主要有两个dll供程序员直接调用,pcap.dll和packet.dll,本程序主要使用pcap.dll,至于packet.dll的使用在21期TOo2y 的《 详谈调用winpcap驱动写arp多功能工具 》作了详细的介绍

一、本程序主要用了下面几个函数

1 . int pcap_findalldevs ( pcap_if_t ** alldevsp, char * errbuf )
用于得到所有网络适配器信息放在 alldevsp

2 . pcap_t* pcap_open_live ( const char * device, int snaplen, int promisc, int to_ms, char * ebuf )
用于打开网络适配器,并设置其捕获参数

3 . int pcap_sendpacket (pcap_t *p, u_char *buf, int size)
发数据包

4 . void pcap_freealldevs (pcap_if_t *alldevsp)
释放所以网络适配器

5 . void pcap_close (pcap_t *p)
关闭网络适配器

二、类说明
CHex ,主要用于处理十六进制数据
CYGPcap ,主要用于对 PCAP 的那几个函数进行封装
CYGEdit, 主要用重载几个操作符,方便使用
CResize ,主要用于窗口变化时,子窗口的变化

三、ARP 协议格式如下:

数据链路层

下载本文示例代码

目的 MAC 地址

6 Byte

源 MAC 地址

6 Byte

类型

2 Byte

阅读(258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~