基于C/C++获取电脑网卡的IP地址信息

这篇具有很好参考价值的文章主要介绍了基于C/C++获取电脑网卡的IP地址信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、网卡是什么?

二、实现访问网卡信息

1.引入库及相关的头文件

2.操作网卡数据

3. 完整代码实现

4.结果验证

总结


前言

简单示例如何在windows下使用c/c++代码实现 ipconfig/all 指令


提示:以下是本篇文章正文内容,下面案例可供参考

一、网卡是什么?

       网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第1层和2层之间。它使得用户可以通过电缆或无线相互连接。

       每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,它被写在卡上的一块ROM中。在网络上的每一个计算机都必须拥有一个独一无二的MAC地址。

       没有任何两块被生产出来的网卡拥有同样的地址。这是因为电气电子工程师协会(IEEE)负责为网络接口控制器(网卡)销售商分配唯一的MAC地址。

二、实现访问网卡信息

1.引入库及相关的头文件

代码如下(示例):

#include <IPHlpApi.h>
#pragma comment(lib, "Iphlpapi.lib")

2.操作网卡数据

代码如下(示例):

int nRel = 0;  
PIP_ADAPTER_INFO pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(sizeof(IP_ADAPTER_INFO));
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);

结构体ADAPTER_INFO只限制于获取本地计算机网络适配器的IPv4信息,该结构体通过调用GetAdaptersInfo函数获取值。

其中,适配器类型Type字段定义了已获支持的适配器类型如下:

常数

数值

说明

MIB_IF_TYPE_ETHERNET

6

以太网适配器

MIB_IF_TYPE_FDDI

15

FDDI(光纤分布数据接口)适配器

MIB_IF_TYPE_LOOPBACK

24

Loopback适配器

MIB_IF_TYPE_OTHER

1

其他类型的适配器

MIB_IF_TYPE_PPP

23

PPP适配器

MIB_IF_TYPE_SLIP

28

Slip适配器

MIB_IF_TYPE_TOKENRING

9

令牌环适配器

3. 完整代码实现

#include <stdio.h>
#include <WinSock.h>
#include <IPHlpApi.h>
#pragma comment(lib, "Iphlpapi.lib")
int main() {
	char mac[18] = { 0 };
	int netCardNum = 0;
	char temp[4] = { 0 };
	DWORD i = 0;
	PIP_ADAPTER_INFO pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(sizeof(IP_ADAPTER_INFO));
	unsigned long stSize = sizeof(IP_ADAPTER_INFO);
	int nRel = 0;
	netCardNum = 0;
	nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
	if (ERROR_BUFFER_OVERFLOW == nRel) {
		free(pIpAdapterInfo);
		pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(stSize);
		nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
	}
	if (ERROR_SUCCESS == nRel) {
		while (pIpAdapterInfo) {
				printf("%s\n", pIpAdapterInfo->IpAddressList.IpAddress.String);
				pIpAdapterInfo = pIpAdapterInfo->Next;
				netCardNum++;
			}
	 }
	if (pIpAdapterInfo) {
		free(pIpAdapterInfo);
	}
	system("pause");
	return 0;

}

4.结果验证

Microsoft Windows [版本 10.0.19044.2604]
(c) Microsoft Corporation。保留所有权利。
C:\Users\sunsz>ipconfig
Windows IP 配置
无线局域网适配器 本地连接* 8:
   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 本地连接* 12:
   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 WLAN:
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::383a:9b03:d0fd:78e2%25
   IPv4 地址 . . . . . . . . . . . . : 192.168.101.134
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.101.1
以太网适配器 以太网 5:
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::da34:1bdd:97a2:2d1e%17
   IPv4 地址 . . . . . . . . . . . . : 172.168.7.100
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
以太网适配器 蓝牙网络连接 2:
   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 vEthernet (WLAN):
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::a33f:509b:ef4d:5b5f%32
   IPv4 地址 . . . . . . . . . . . . : 172.30.192.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :
以太网适配器 vEthernet (以太网 5):
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::c053:e2cb:7f6d:55b7%65
   IPv4 地址 . . . . . . . . . . . . : 172.30.112.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :
C:\Users\sunsz>

c语言获取网卡信息,c plus,c plus plus,windows,c++,c语言,windows,网卡

总结

  以上就是代码实现的内容,本文仅仅简单介绍了GetAdaptersInfo的使用。文章来源地址https://www.toymoban.com/news/detail-720053.html

到了这里,关于基于C/C++获取电脑网卡的IP地址信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一台电脑两个网卡ip地址设置方法(全程图解设置流程步骤)

    外网为192.168.1.1/24 ; PC地址为 192.168.1.2/24 专网为192.168.52.1/24 ; 服务器地址为192.168.100.22/24 需求,电脑同时能上外网及专网 方法一、在台式机上增加双网卡 二、配置连接专网的网卡IP地址为192.168.52.2/24 ,默认网关及DNS不用填 三、添加静态路由 route add 192.168.100.0 mask 255.255.2

    2024年02月15日
    浏览(29)
  • window bat脚本获取想要的物理网卡的真实IP地址

    电脑存在虚拟网卡以及真实的物理网卡,想使用bat脚本获取真正的物理网卡的IP地址 可以使用wmic 如下命令各个网卡的IP地址, IPEnabled=TRUE ,表示连接上网络的网卡 会输出类似如下内容 根据输出的内容信息,我们可以增加筛选条件,把电脑的物理网卡的MAC地址加入筛选逻辑,

    2024年02月15日
    浏览(30)
  • 电脑IP地址密码寻找指南:解密如何快速获取IP地址登录密码?

    在使用电脑时,你可能会遇到需要查找IP地址登录密码的情况。而对于大部分普通用户来说,这项任务并不容易。那么,IP地址密码到底在哪里找呢?本文将为你详细解析,提供一些方法和技巧,帮助你快速找到电脑的IP地址密码。 首先,我们需要弄清楚什么是IP地址密码。

    2024年02月03日
    浏览(37)
  • 获取IP地址信息的API合集

    有时候开发时偶尔会需要前端传客户端的ip地址,往往都要自己写方法去实现,今天给大家分享一些 API解放你们的双手。以下方法可以获取客户端外网ip。 API地址: https://www.ip.cn/api/index?iptype=0 返回值: API地址:https://2023.ipchaxun.com/ 返回值: API地址:https://opendata.baidu.com/ap

    2024年02月05日
    浏览(27)
  • 使用Java获取发送请求的电脑的IP地址

    客户端所有的请求信息都可以通过HttpServletRequest获得,获取客户端ip可以通过getRemoteAddr()获取。 但是如果客户端是通过代理访问我们的服务器,那么getRemoteAddr()获取到的ip就很有可能不是真实的ip,这时候我们可以通过请求头里的x-forwarded-for来获取真实的ip,请求每经一次代理

    2024年02月16日
    浏览(26)
  • Win10 电脑突然获取不到ip地址,不能正常上网

    联想E14笔记本 Windows 10 专业版 Win10 电脑突然获取不到ip地址,不能正常上网,手动尝试设置ip地址是可以正常上网 估计是系统网卡数据错误 1.打开cmd输入下面2条命令,重置网卡 2.重启电脑,恢复正常可以获取地址和上网

    2024年02月15日
    浏览(36)
  • js获取用户浏览器信息和ip地址以及位置

    效果如下   效果如下 这里是在 vue中created生命周期中发送请求  返回输入如下  

    2024年02月11日
    浏览(40)
  • vue2获取当前设备的 IP 地址以及位置信息

    data数据:

    2024年04月25日
    浏览(33)
  • 交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

    深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交换机查看arp表,获取不到服务器网卡mac地址

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包