| 
				 表6 程序中使用Winpcap数据结构(变量)表 
| 
 函数名  | 
 参数  | 
 说明  |  
| 
 pcap_open_live(*devicename, 65536,1,-1,errbuf);  | 
 Devicename-设备名称 
65536-捕获数据包最大长度 
1-      设为混杂模式,这样可以捕获到所有的包 
-1 超时,表示读一个包后多久返回,-1表示立即返回,无超时 
errbuf-错误处理缓冲区  | 
 打开一个网络设备,该函数返回该设备的pcap_t指针  |  
| 
 pcap_close(fp);  | 
 fp-设备指针  | 
 关闭已打开的网络设备  |  
| 
 pcap_findalldevs(&alldevs, errbuf);  | 
 alldevs-pcap_if_t结构变量 
errbuf-错误处理缓冲区  | 
 返回系统中所有的网络设备 
   |  
| 
 pcap_next_ex( fp, &header, &pkt_data);  | 
 fp-设备指针 
header-数据包头 
pkt_data-数据包内容  | 
 该函数从网络设备中读取一个数据包 
返回值为1:成功 
        -1:发生错误 
        0:超时  |   
                      表7 程序中使用的Winpcap函数表 
三、           程序开发简介 
为了实现程序的功能,需要定义如下一个结构: 
struct packetstru 
{ 
  unsigned short datalen;  //数据报长度 
  unsigned char data[2000];  //数据内容 
  unsigned long tick;  //捕获时间 
  int clearflag;  //清除标志 0-不清除 1-清除 
  int showflag;  //显示标志 0-不显示 1-显示 
  struct packetstru *next;  //指向下一数据包 
}; 
该结构定义了一个单链表,每个捕获到的数据包都保存在该链表中。 
函数convertip用于将字符串表示的IP地址转换成4个unsigned char值 
函数clear_packetlist用于从数据包链表中清除clearflag为1的记录 
函数GetMacAddress 用于取source表示的网络设备MAC地址 
数据包捕获在如下的线程中完成 			
				 |