zoukankan      html  css  js  c++  java
  • vc++获取系统网卡列表及IP地址信息

      1 #include "stdafx.h"
      2 #include <Windows.h>
      3 #include <IPHlpApi.h>
      4 #include <iostream>
      5 #pragma comment(lib,"IPHlpApi.lib")
      6 using namespace std;
      7 
      8 BOOL GetLocalAdaptersInfo()
      9 {
     10     //IP_ADAPTER_INFO结构体
     11     PIP_ADAPTER_INFO pIpAdapterInfo = NULL;
     12     pIpAdapterInfo = new IP_ADAPTER_INFO;
     13 
     14     //结构体大小
     15     unsigned long ulSize = sizeof(IP_ADAPTER_INFO);
     16 
     17     //获取适配器信息
     18     int nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);
     19 
     20     if (ERROR_BUFFER_OVERFLOW == nRet)
     21     {
     22         //空间不足,删除之前分配的空间
     23         delete []pIpAdapterInfo;
     24 
     25         //重新分配大小
     26         pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[ulSize];
     27 
     28         //获取适配器信息
     29         nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);
     30 
     31         //获取失败
     32         if (ERROR_SUCCESS  != nRet)
     33         {
     34             if (pIpAdapterInfo != NULL)
     35             {
     36                 delete []pIpAdapterInfo;
     37             }
     38             return FALSE;
     39         }
     40     }
     41 
     42     //MAC 地址信息
     43     char szMacAddr[20];
     44     //赋值指针
     45     PIP_ADAPTER_INFO pIterater = pIpAdapterInfo;
     46     while(pIterater)
     47     {
     48         cout<<"网卡名称:"<<pIterater->AdapterName<<endl;
     49 
     50         cout<<"网卡描述:"<<pIterater->Description<<endl;
     51 
     52         sprintf_s(szMacAddr,20,"%02X-%02X-%02X-%02X-%02X-%02X",
     53                                               pIterater->Address[0],
     54                                               pIterater->Address[1],
     55                                               pIterater->Address[2],
     56                                               pIterater->Address[3],
     57                                               pIterater->Address[4],
     58                                               pIterater->Address[5]);
     59 
     60         cout<<"MAC 地址:"<<szMacAddr<<endl;
     61 
     62         cout<<"IP地址列表:"<<endl<<endl;
     63 
     64         //指向IP地址列表
     65         PIP_ADDR_STRING pIpAddr = &pIterater->IpAddressList;
     66         while (pIpAddr)
     67         {
     68             cout<<"IP地址:  "<<pIpAddr->IpAddress.String<<endl;
     69             cout<<"子网掩码:"<<pIpAddr->IpMask.String<<endl;
     70 
     71             //指向网关列表
     72             PIP_ADDR_STRING pGateAwayList = &pIterater->GatewayList;
     73             while(pGateAwayList)
     74             {
     75                 cout<<"网关:    "<<pGateAwayList->IpAddress.String<<endl;
     76 
     77                 pGateAwayList = pGateAwayList->Next;
     78             }
     79 
     80             pIpAddr = pIpAddr->Next;
     81         }
     82         cout<<endl<<"--------------------------------------------------"<<endl;
     83 
     84         pIterater = pIterater->Next;
     85     }
     86 
     87     //清理
     88     if (pIpAdapterInfo)
     89     {
     90         delete []pIpAdapterInfo;
     91     }
     92 
     93     return TRUE;
     94 }
     95 
     96 int _tmain(int argc, _TCHAR* argv[])
     97 {
     98     GetLocalAdaptersInfo();
     99 
    100     cin.get();
    101     return 0;
    102 }
  • 相关阅读:
    特征选择常用算法综述
    C++中的extern "C"
    OpenGL管道概括
    使用CGAL查找输入三角网格模型独立模型个数
    图形学领域的关键算法及源码链接
    STL学习笔记
    CGAL+QT4.84+Boost1.53 错误[Parse error at "BOOST_JOIN"]
    Template函数
    在windows环境下安装配置CGAL
    关于C++中的堆、栈
  • 原文地址:https://www.cnblogs.com/nodegis/p/5808515.html
Copyright © 2011-2022 走看看