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 }
时间: 2024-10-11 18:36:07

vc++获取系统网卡列表及IP地址信息的相关文章

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 PI

ubuntu下仅仅获取网卡一的ip地址 &amp;&amp; shell中字符串拼接

问题描述: ubuntu下仅仅获取网卡一的ip地址 问题背景: eth0,eth1,eth2……代表网卡一,网卡二,网卡三…… lo代表127.0.0.1,即localhost sudo ifconfig eth0 | grep 'inet addr' | cut -d : -f 2 | cut -d ' ' -f 1 问题描述: 已知字符串str1, str2, 拼接str1和str2,结果为str3 str1=hello str2=world str3="$str1 $str2"

linux 两块网卡设置同一ip地址

双网卡绑定为同一个虚拟的网卡(bond), 外界看到的好像是bond网卡在向外界提供服务, 而其实底层是两块真实的网卡在提供服务. 下面介绍一些简单的概念: 1>. Bonding 就是将多块网卡绑定同一IP 地址对外提供服务,可以实现高可用或者负载均衡.当然,直接给两块网卡设置同一IP 地址是不可能的.通过bonding ,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MAC 地址. 2>. Bonding 的工作模式 Mode 0 (balance-rr) 轮转(Round-robi

多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.

python 跨平台获取网卡信息和本机ip地址

笔者在项目中遇到过获取本机网卡ip的例子,利用python库psutil解决了此问题. def get_netcard(): """获取网卡名称和ip地址 """ netcard_info = [] info = psutil.net_if_addrs() for k, v in info.items(): for item in v: if item[0] == 2 and not item[1] == '127.0.0.1': netcard

vSphere中克隆CentOS虚拟机添加新的网卡及配置IP地址

前言 本次安装的CentOS是在vCenter中克隆出来的.这样就存在一下问题: 问题一:MAC冲突 问题描述: 可能克隆的系统的网卡eth0与克隆前的系统一直,会造成MAC冲突: 解决办法: 1.修改cat /etc/udev/rules.d/70-persistent-net.rules中的MAC 2.到cd /etc/sysconfig/network-scripts/中修改原有网卡的eth0的配置文件ifcfg-eth0中的MAC与/etc/udev/rules.d/70-persist

Java获取请求客户端的真实IP地址

Java获取请求客户端的真实IP地址 Java,获取客户端的IP地址的方法: request.getRemoteAddr() 这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了; 如果使用了反向代理软件,将http://192.168.1.110:2046 的URL反向代理为 http://www.javapeixun.com.cn的URL时, 用 request.getRemoteAddr() 方法获取的IP地址是:127.0

Ubuntu 为网卡配置静态IP地址

为网卡配置静态IP地址编辑文件/etc/network/interfaces:sudo vi /etc/network/interfaces并用下面的行来替换有关eth0的行:# The primary network interfaceauto eth0iface eth0 inet staticaddress 192.168.2.1gateway 192.168.2.254netmask 255.255.255.0#network 192.168.2.0#broadcast 192.168.

Ubuntu配置eth网卡,固定IP地址

Ubuntu配置eth网卡,固定IP地址 1.修改配置文件/etc/network/interfaces [email protected]:~# sudo gedit /etc/network/interfaces 添加以下内容: auto eth0                  #设置自动启动eth0接口 iface eth0 inet static     #配置静态IP address 192.168.11.88      #IP地址 netmask 255.255.255.0