使用iphlpapi.h获得windows下一些基本的网络连接信息

windows的平台sdk中有一个很重要的iphlpapi.h头文件,它提供了一些非常实用的获取网络信息(网卡、tcp/ip等)的函数:

里面主要的函数主要有:

GetNumberOfInterfaces()获取当前的网络接口数目:注意不是网卡数目,这个相当于你的查看网络连接里面的连接数目+1(本地回路)

GetIfTable()得到所有网络接口的信息(包括网卡信息、收到发出数据量、连接类型、连接状态等)

GetIpAddrTable() GetIpNetTable():获取ip到网络接口、IP到网卡地址的映射

GetTcpTable()  GetUdpTable()获取当前的TCP UDP连接状况

GetIpStatistics() GetIcmpStatistics() GetTcpStatistics()GetUdpStatistics()  得到当前各协议的主要参数和信息,此外还有一些相应的set函数

还有关于路由的一些函数

GetAdapterIndex() GetAdaptersInfo() GetAdaptersAddresses():得到关于网卡的信息

AddIPAddress():设置IP

SendARP():发送一个arp请求,获得一个物理地址所对应的IP地址

这里的函数都比较实用,但是一些函数的用法稍微有些奇怪。

如里面很多的函数,以GetIfTable为例,它的定义是

DWORD GetIfTable(
  __out         PMIB_IFTABLE pIfTable,
  __in_out      PULONG pdwSize,
  __in          BOOL bOrder
);

第一个参数为一个接收存储数据的缓存,第二个参数为这片数据的大小

我们直接调用将不知道该将第二个参数设为多少,所以应该先调用一次,将第二个参数设为MIB_IFTABLE结构体的size,这样pdwSize中将返回所需的缓存大小

MIB_IFTABLE* it;

ULONG pdwSize=sizeof(MIB_IFTABLE);

    it=(MIB_IFTABLE*)(malloc(sizeof(MIB_IFTABLE)));

    GetIfTable(it,&pdwSize,false);free(it);

然后再为数据开辟这么大的缓存再调用一次才行

it=(MIB_IFTABLE*)(malloc(pIfRow));

    GetIfTable(it,&pIfRow,false);

    free(it);

时间: 2024-10-22 05:57:43

使用iphlpapi.h获得windows下一些基本的网络连接信息的相关文章

CentOS下安装MySQL,Windows下使用Navicat for MySql连接

安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: yum install mysql 安装mysql 服务器端: yum install mysql-server yum install mysql-devel 启动&&停止 数据库字符集设置 mysql配置文件/etc/my.cnf中的[mysqld]配置节中加入default-charact

[20121203]windows下使用systeminfo查看本机信息.txt

[20121203]windows下使用systeminfo查看本机信息.txt 前几天看别人使用systeminfo命令查看本机信息,感觉显示很多,在自己的机器上做一个测试以及学习看看. d:\tools>systeminfo /? SYSTEMINFO [/S system [/U username [/P [password]]]] [/FO format] [/NH] 描述:    该工具显示本地或远程机器(包括服务包级别)的操作系统配置的信息. 参数列表:    /S      sys

我们在Windows 8系统中无线网络连接的设置方法

第一步.首先单击托盘中的网络图标,在弹出的右侧网络边栏中查看飞行模式是否开启,如果开启则需要关闭它.然后在Wi-Fi中找到私有的无线网络SSID(无线网络广播名称),单击"连接". 第二步.然后,在白色方框中输入该私有无线网络的安全密钥,如果感觉输入错误,可以单击右侧的眼睛图标查看输入的内容,确认无误后单击"下一步". 第三步.如果网络安全密钥输入正确,此时计算机已经能够通过无线网络连接到因特网了,即可开始使用.当然,无线网络连接还有最后一步,是否启用电脑之间的共享

Windows 7操作系统如何设置网络连接

当我们在电脑上安装了新系统后,最重要的一件事就是让其可以连接到互联网.在Windows 7中,网络的连接变得更加容易.更易于操作,它将几乎所有与网络相关的向导和控制程序聚合在"网络和共享中心"中,通过可视化的视图和单站式命令,我们便可以轻松连接到网络.下面我们就来看看如何在Windows 7中使用有线和无线网络连接互联网. 首先来看看有线网络的连接,所有的操作其实非常简单与熟悉,与过去在Windows XP中的操作大同小异,变化的仅仅是一些界面的改动或者操作的快捷化.进入控制面板后,依

Windows Server 2008系统VPN网络连接设置方法

虚拟专用网可以帮助远程用户.公司分支机构.商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输.通过将数据流转移到低成本的压网络上,一个企业的虚拟专用网解决方案将大幅度地减少用户花费在城域网和远程http://www.aliyun.com/zixun/aggregation/18415.html">网络连接上的费用.同时,这将简化网络的设计和管理,加速连接新的用户和网站.另外,虚拟专用网还可以保护现有的网络投资. 随着用户的商业服务不断发展,企业的虚拟专用网解决方案可以使

windows下用脚本设置本地连接ip

设置本地连接静态ip netsh interface ip set address "本地连接" static 192.168.1.10 255.255.255.0 以上两个ip分别为本地连接ip和子网掩码,还可以在后面指定网关, ip之间用空格分隔 设置为从DHCP自动获取IP netsh interface ip set address "本地连接" source="dhcp" 把这两段脚本分别保存在不同的bat文件中,在PATH环境变量中加

windows下Apache配置SSL安全连接

  什么是SSL? SSL(Secure Socket Layer): 是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全.Open SSL下载地址:http://www.openssl.org/source/ 一.下载并安装 支持SSL的 Apache 1.安装配有SSL模块的apache, 下载地址http://httpd.apache.org/download.cgi#apache23 附件提供httpd-2.2.15-win32-x86-openssl-

Windows下通过bat获取网络连线实际名称,加强IP类设置脚本的兼容性_DOS/BAT

其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将[本地连接]写死在代码中,可实际上并不是所有电脑都叫本地连接:比如有的用户电脑可能升级了网卡驱动,或者更换了网卡,导致网络连线的名称变成"本地连接2",又比如有无聊好事者(某产线的作业员电脑),将网络连线的名称各种DIY,我就见过一个修改成"操蛋的青春",瞬间无语! 好了,废话不多说,直接上菜! 对于网络连线的实际名称,可能出现的情况有: 1.网卡更换/驱动升级导致名称变更,比如本地连接

在Windows下通过密钥认证机制连接Linux服务器的方法

  SSH服务支持一种安全认证机制,即密钥认证.所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密. 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难. ssh 的密钥认证就是使用了这一特性.服务器和客户端都各自拥有自己的公钥和密钥. 如何使用密钥认证登录linux服务器呢? 首先使用工具 PUTTYGEN.EXE 生成密钥对.打开工具