WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(七)——获得与释放网络适配器设... 阅读

深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(1)

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 其中结构体pcap_addr的定义在下面描述,结构体pcap_addr表示接口地址的信息,深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(1)(2),定义如下:typedef struct pcap_addr pcap_addr_t;struct pcap_addr { stru

其中结构体pcap_addr的定义在下面描述。结构体pcap_addr表示接口地址的信息,定义如下:

typedef struct pcap_addr pcap_addr_t;
 
struct pcap_addr {
    struct pcap_addr *next;    /*指向下一个元素的指针*/
    struct sockaddr *addr;      /* IP地址 */
    struct sockaddr *netmask;   /* 网络掩码 */
    struct sockaddr *broadaddr; /* 广播地址 */
    struct sockaddr *dstaddr;   /* P2P目的地址*/
};

1.1.2        pcap_findalldevs_ex函数

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器设备列表。WinPcap提供了pcap_findalldevs_ex函数来实现这个功能,该函数的的原型如下:

int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth,
                        pcap_if_t **alldevs, char *errbuf);

该函数创建一个能用pcap_open函数打开的网络适配器设备列表。该函数是老函数pcap_findalldevs的一个扩展,pcap_findalldevs()是一个过时的函数,其只允许列出在本机上的网络设备。反之pcap_findalldevs_ex也允许列出一个远程机器上的网络设备,此外还能列出一个给定文件夹中可用的pcap文件。因为pcap_findalldevs_ex()依赖于标准的pcap_findalldevs()来获得本地机器的地址,所以它是平台无关的。

万一该函数必须列出远程机器上的设备,它对那台机器打开一个新的控制连接,重新获得那个网络接口并终止连接。然而,如果函数检测到远程计算机正处在“激活模式”下,连接不会终止并使用已存在的套结字。

上一页  1 2 3 4 5 6 7  下一页

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接