• 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 }


    原文地址:http://blog.csdn.net/sonsie007/article/details/8837572

  • 相关阅读:
    DELPHI加密字串(异或运算加密)
    delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)
    delphi 浮点数转换成十六进制字符串的方法
    LRC CRC 纵向冗余码校验
    lrc 校验码 ascii 格式
    LRC的效验码的计算方法
    写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
    CRC的校验原理
    CRC校验
    RTU模式与ASCII模式有什么不同
  • 原文地址:https://www.cnblogs.com/liuxupiaoshi/p/4240024.html
Copyright © 2020-2023  润新知