当前位置:  编程技术>c/c++/嵌入式

获取本地网卡适配器信息具体代码

    来源: 互联网  发布时间:2014-10-23

    本文导语:  效果如下: 具体代码如下: 代码如下:#include #include #include #pragma comment(lib, "IPHlpApi")#pragma comment(lib, "ws2_32") int main(int argc, char **argv){    PIP_ADAPTER_INFO pAdapterInfo = NULL;    ULONG ulLen = sizeof(IP_ADAPTER_INFO);    struct tm newtime;    ...

效果如下:

具体代码如下:

代码如下:

#include
#include
#include

#pragma comment(lib, "IPHlpApi")
#pragma comment(lib, "ws2_32")

int main(int argc, char **argv)
{
    PIP_ADAPTER_INFO pAdapterInfo = NULL;
    ULONG ulLen = sizeof(IP_ADAPTER_INFO);
    struct tm newtime;
    char szBuffer[32];
    errno_t error;

    //为适配器结构申请内存
    //pAdapterInfo = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, ulLen);
    pAdapterInfo = (PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(), 0, sizeof(IP_ADAPTER_INFO));
    if (NULL == pAdapterInfo)
    {
        printf("Error allocating memory needed to call GetAdaptersInfo.n");
        return 1;
    }

    if (ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(pAdapterInfo, &ulLen))
    {
        HeapFree(GetProcessHeap(), 0, pAdapterInfo);
        pAdapterInfo = (PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(), 0, ulLen);
        if (NULL == pAdapterInfo)
        {
            printf("Error allocating memory needed to call GetAdaptersInfo.n");
            return 1;
        }
    }

    //取得本地适配器结构信息
    if (ERROR_SUCCESS != GetAdaptersInfo(pAdapterInfo, &ulLen))
    {
        printf("GetAdaptersInfo error!n");
        return 0;
    }
    if (NULL == pAdapterInfo)
    {
        printf("There is no adapters!n");
        return 0;
    }

    SetConsoleTitle(TEXT("本地网卡适配器信息"));

    do
    {
        printf("ComboIndex:%dn", pAdapterInfo->ComboIndex);
        printf("Adapter Name:%sn", pAdapterInfo->AdapterName);
        printf("Adapter Desc:%sn", pAdapterInfo->Description);
        printf("Adapter Addr:");
        for (size_t i = 0; i < pAdapterInfo->AddressLength; i++)
        {
            if (i == (pAdapterInfo->AddressLength - 1))
            {
                printf("%02X", (int)pAdapterInfo->Address[i]);
            }
            else
            {
                printf("%02X-", (int)pAdapterInfo->Address[i]);
            }
        }
        printf("n");
        printf("Index:%dn", pAdapterInfo->Index);
        printf("Type:");
        switch (pAdapterInfo->Type)
        {
        case MIB_IF_TYPE_OTHER:printf("Othern"); break;
        case MIB_IF_TYPE_ETHERNET:printf("Ethernetn"); break;
        case MIB_IF_TYPE_TOKENRING:printf("Token Ringn"); break;
        case MIB_IF_TYPE_FDDI:printf("FDDIn"); break;
        case MIB_IF_TYPE_PPP:printf("PPPn"); break;
        case MIB_IF_TYPE_LOOPBACK:printf("Lookbackn"); break;
        case MIB_IF_TYPE_SLIP:printf("Slipn"); break;
        default:printf("Unknow type %ldn", pAdapterInfo->Type); break;
        }
        printf("IP Address:%sn", pAdapterInfo->IpAddressList.IpAddress.String);
        printf("IP Mask:%sn", pAdapterInfo->IpAddressList.IpMask.String);
        printf("Gateway:%sn", pAdapterInfo->GatewayList.IpAddress.String);

        if (pAdapterInfo->DhcpEnabled)
        {
            printf("DHCP Enabled:Yesn");
            printf("DHCP Server:%sn", pAdapterInfo->DhcpServer.IpAddress.String);
            printf("Lease Obtained:");
            error = _localtime32_s(&newtime, (__time32_t*)&pAdapterInfo->LeaseObtained);
            if (error)
            {
                printf("Invalid Argument to _localtime32_s.n");
            }
            else
            {
                error = asctime_s(szBuffer, 32, &newtime);
                if (error)
                {
                    printf("Invalid Argument to asctime_s.n");
                }
                else
                {
                    printf("%s", szBuffer);
                }
            }

            printf("Lease Expires:");
            error = _localtime32_s(&newtime, (__time32_t*)&pAdapterInfo->LeaseExpires);
            if (error)
            {
                printf("Invalid Argument to _localtime32_s.n");
            }
            else
            {
                error = asctime_s(szBuffer, 32, &newtime);
                if (error)
                {
                    printf("Invalid Argument to asctime_s.n");
                }
                else
                {
                    printf("%s", szBuffer);
                }
            }
        }
        else
        {
            printf("DHCP Enabled:Non");
        }

        if (pAdapterInfo->HaveWins)
        {
            printf("Have Wins:Yesn");
            printf("Primary Wins Server:%sn", pAdapterInfo->PrimaryWinsServer.IpAddress.String);
            printf("Secondary Wins Server:%sn", pAdapterInfo->SecondaryWinsServer.IpAddress.String);
        }
        else
        {
            printf("Have Wins:Non");
        }

        printf("=================================================================n");

        pAdapterInfo = pAdapterInfo->Next;
    } while (pAdapterInfo);

    if (pAdapterInfo)
    {
        HeapFree(GetProcessHeap(), 0, pAdapterInfo);
    }

    return 0;
}


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 获取网卡信息的方法
  • 急急急,求准确获取千兆网卡速率的方法!
  • linux下,如何获取未配置的网卡的mac地址。
  • CentOs ifconfig -a命令获取网卡信息 网卡标识出现__tmp146079472
  • 请教:如何将网卡ip地址由DHCP获取该为指定ip
  • 知道IP地址,请问如何获取这个IP地址对应网卡的mac地址?
  • 在Linux下用c编程怎么获取网卡序列号和硬盘序列号?
  • 多网卡环境用C语言怎么获取所有的IP列表
  • 多网卡多IP情况下如何通过脚本获取当前登录终端使用的ip?
  • VMWare的网卡使用桥连,为什么获取不到ip呢?????
  • 请教:如何在程序中获取本地网卡的默认网关?
  • 用C#获取硬盘序列号,CPU序列号,网卡MAC地址的源码
  • C#获取cpu序列号、硬盘ID、网卡MAC地址的实现代码
  • java中通过网卡名称获取IP地址
  • C语言如何获取嵌入式linux网卡上的mac地址
  • php如何获取网卡MAC地址(支持WIN与LINUX系统)
  • php获取网卡的MAC地址支持WIN/LINUX系统
  • Linux下如何获取网卡设备收发数据包相关统计数据?
  • 1.请问如何编程获取网关ip地址 2.如何在一块网卡中绑定多个ip地址?
  • php获取客户端网卡mac物理地址
  • Python获取网页编码的方法及示例代码
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • java Servlet获取和设置cookie实例代码
  • 关于获取在jsp上获取客户端时间的问题
  • 在Linux下用c编程怎么获取网卡序列号和硬盘序列号? iis7站长之家
  • 关于Ganglia中的gmond组件收集到的资源信息如何获取(如何获取telnet后返回的信息)
  • php获取访客ip地址原理及提供七段代码供参考
  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径
  • 利用sender的Parent获取GridView中的当前行(获取gridview的值)
  • php获取本机ip地址 php获取远程IP地址
  • linux获取主机名后用gethostbyname() 不能获取主机ip


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3