条件:

获取网络适配器需要WinpCap开发平台。平台下载地址:http://www.winpcap.org

本人用的开发平台:WpdPack_4_1_2

文件预览如下图:

获取网络适配器_编程语言

Include里的文件如下:

获取网络适配器_编程语言_02

Lib里的文件如下:

获取网络适配器_编程语言_03

 

使用开发工具:vc++ 6.0

写程序之前,需要对vc++ 6.0做一些配置。以下是详细的配置过程:

1,打开 工程->>设置->>C/C++,将 WPCAP,HAVE_REMOTE 添加到预处理程序定义后,点确定。如图:

  获取网络适配器_编程语言_04

2,打开 工具->>选项->>目录->>选择 include files   -->>将WpdPack4_1_2工具包里include文件夹添加进去。如图:

  获取网络适配器_编程语言_05

  用同样的方法,将WpdPack4_1_2工具包里Lib文件夹添加进去。如图:

  获取网络适配器_编程语言_06

 

开发环境配置好后,就可以写代码了。

请新建一个控制台工程。我这里的工程名为 获取网络适配器

 

获取网络适配器.cpp 的内容如下:

#include "stdafx.h"


#define LINE_LEN 16

int main(int argc, char **argv)
{   
    pcap_if_t *alldevs;
    pcap_if_t *d;
    int i=0;
    char errbuf[PCAP_ERRBUF_SIZE];
    
    /* 获取本地机器设备列表 */
    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
    {
        fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);
        exit(1);
    }
    
    /* 打印列表 */
    for(d= alldevs; d != NULL; d= d->next)
    {
        printf("%d. %s\n", ++i, d->name);
        if (d->description)
            printf("  描述:%s\n\n", d->description);
        else
            printf("  没有可用的描述!\n\n");
    }
    
    if (i == 0)
    {
        printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
        return 0;
    }

    /* 不再需要设备列表了,释放它 */
    pcap_freealldevs(alldevs);

    return 0;
}

 

stdafx.h的内容如下:

// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__9DD59F57_836B_4B5A_B16B_499430950854__INCLUDED_)
#define AFX_STDAFX_H__9DD59F57_836B_4B5A_B16B_499430950854__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers

#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
// TODO: reference additional headers your program requires here

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__9DD59F57_836B_4B5A_B16B_499430950854__INCLUDED_)

工程截图:

获取网络适配器_编程语言_07

 

运行截图:

获取网络适配器_编程语言_08

 

本人希望更多的人受益。此文可以随便转载