当前位置: 首页 > news >正文

基于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%25IPv4 地址 . . . . . . . . . . . . : 192.168.101.134子网掩码  . . . . . . . . . . . . : 255.255.255.0默认网关. . . . . . . . . . . . . : 192.168.101.1
以太网适配器 以太网 5:连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : fe80::da34:1bdd:97a2:2d1e%17IPv4 地址 . . . . . . . . . . . . : 172.168.7.100子网掩码  . . . . . . . . . . . . : 255.255.255.0默认网关. . . . . . . . . . . . . :
以太网适配器 蓝牙网络连接 2:媒体状态  . . . . . . . . . . . . : 媒体已断开连接连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 vEthernet (WLAN):连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : fe80::a33f:509b:ef4d:5b5f%32IPv4 地址 . . . . . . . . . . . . : 172.30.192.1子网掩码  . . . . . . . . . . . . : 255.255.240.0默认网关. . . . . . . . . . . . . :
以太网适配器 vEthernet (以太网 5):连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : fe80::c053:e2cb:7f6d:55b7%65IPv4 地址 . . . . . . . . . . . . : 172.30.112.1子网掩码  . . . . . . . . . . . . : 255.255.240.0默认网关. . . . . . . . . . . . . :
C:\Users\sunsz>

总结

  以上就是代码实现的内容,本文仅仅简单介绍了GetAdaptersInfo的使用。

相关文章:

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

目录 前言 一、网卡是什么&#xff1f; 二、实现访问网卡信息 1.引入库及相关的头文件 2.操作网卡数据 3. 完整代码实现 4.结果验证 总结 前言 简单示例如何在windows下使用c/c代码实现 ipconfig/all 指令 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…...

28相似矩阵和若尔当标准型

一、关于正定矩阵的一些补充 在此之前&#xff0c;先讲一下对称矩阵中那些特征值为正数的矩阵&#xff0c;这样特殊的矩阵称为正定矩阵。其更加学术的定义是&#xff1a; SSS 是一个正定矩阵&#xff0c;如果对于每一个非零向量xxx&#xff0c;xTSx>0x^TSx>0xTSx>0 正…...

springboot操作MongoDB

启动类及配置import com.mongodb.client.MongoClient;import com.mongodb.client.MongoClients;import com.mongodb.client.internal.MongoClientImpl;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplicatio…...

1月奶粉电商销售数据榜单:销售额约20亿,高端化趋势明显

鲸参谋电商数据监测的2023年1月份京东平台“奶粉”品类销售数据榜单出炉&#xff01; 根据鲸参谋数据显示&#xff0c;1月份京东平台上奶粉的销量约675万件&#xff0c;销售额约20亿元&#xff0c;环比均下降19%左右。与去年相比&#xff0c;整体也下滑了近34%。可以看出&#…...

跨境数据传输是日常业务中经常且至关重要的组成部分

跨境数据传输是日常业务中经常且至关重要的组成部分。在过去的20年中&#xff0c;由于全球通信网络和业务流程的发展&#xff0c;全球数据流的模式已迅速发展。随着数据从数据中心移到数据中心和/或跨边界移动&#xff0c;安全漏洞已成为切实的风险。有可能违反国家和国际数据传…...

错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案

近日&#xff0c;在使用CascadeRCNN完成目标检测任务时&#xff0c;我在使用这个模型训练自己的数据集时出现了如下错误&#xff1a; tensorflow.python.framework.errors_impl.OutOfRangeError: PaddingFIFOQueue _1_get_batch/batch/padding_fifo_queue is closed and has in…...

springboot项目初始化执行sql

Sprint Boot应用可以在启动的时候自动执行项目根路径下的SQL脚本文件。我们需要先将sql脚本写好&#xff0c;并将这些静态资源都放置在src/main/resources文件夹下。 再配置application.yml&#xff1a; spring.datasource.initialization-mode 必须配置初始化模式initializa…...

Kubernetes之存储管理(中)

NFS网络存储 emptyDir和hostPath存储&#xff0c;都仅仅是把数据存储在pod所在的节点上&#xff0c;并没有同步到其他节点&#xff0c;如果pod出现问题&#xff0c;通过deployment会产生一个新的pod&#xff0c;如果新的pod不在之前的节点&#xff0c;则会出现问题&#xff0c…...

MySQL workbench的基本操作

1. 创建新的连接 hostname主机名输入“local host”和“127.0.0.1”效果是一样的&#xff0c;指的是本地的服务器。 需要注意的是&#xff0c;此处的密码在安装软件的时候已经设定。 点击【Test Connection】&#xff0c;测试连接是否成功。 创建完的连接可以通过&#xff0c…...

【Flink】FlinkSQL中Table和DataStream互转

在我们实际使用Flink的时候会面临很多复杂的需求,很可能需要FlinkSQL和DataStream互相转换的情况,这就需要我们熟练掌握Table和DataStream互转,本篇博客给出详细代码以及执行结果,可直接使用,通过例子可学会Table和DataStream互转,具体步骤如下: maven如下<?xml ver…...

网络总结知识点(网络工程师必备)一

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 1.TCP UDP协议的区别 2.ARP是第几层协议,其作用...

离线安装samba与配置(.tar方式安装)

一、samba离线安装【安装并设置成功后&#xff0c;相关文件及其位置&#xff1a;①smbd&#xff1a;/usr/local/samba/sbin/smbd②nmdb&#xff1a;/usr/local/samba/sbin/nmbd③配置文件 smb.conf&#xff1a;/usr/local/samba/lib/smb.conf④添加用户的 smbpasswd 文件&#…...

[Java基础]—JDBC

前言 其实学Mybatis前就该学了&#xff0c;但是寻思目前主流框架都是用mybatis和mybatis-plus就没再去看&#xff0c;结果在代码审计中遇到了很多cms是使用jdbc的因此还是再学一下吧。 第一个JDBC程序 sql文件 INSERT INTO users(id, NAME, PASSWORD, email, birthday) VAL…...

基本面向对象编程-计算机基本功能实现_

《C/S项目实训》实验报告 实验名称&#xff1a; 基本面向对象编程-计算机基本功能实现_ 一、实验目的 通过综合实践项目&#xff0c;理解Java 程序设计是如何体现面向对象编程基本思想&#xff0c;掌握OOP方法&#xff0c;掌握事件触发、消息响应机制。进一步巩固面向对…...

C++面向对象之多态性

文章目录C面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数&#xff0c;父类的指针指向子类对象&#xff0c;将调用父类中的函数&#xff0c;无法调用子类中的重写函数&…...

Android性能优化系列篇:弱网优化

弱网优化1、Serializable原理通常我们使用Java的序列化与反序列化时&#xff0c;只需要将类实现Serializable接口即可&#xff0c;剩下的事情就交给了jdk。今天我们就来探究一下&#xff0c;Java序列化是怎么实现的&#xff0c;然后探讨一下几个常见的集合类&#xff0c;他们是…...

Mysql 插入大批量数据调优方法

Mysql 插入大批量数据调优方法[toc]1、多线程插入&#xff08;单表&#xff09;在数据里做插入操作的时候&#xff0c;整体时间的分配是这样的&#xff1a;链接耗时 &#xff08;30%&#xff09;发送query到服务器 &#xff08;20%&#xff09;解析query &#xff08;20%&#…...

matlab基础

系列文章目录 文章目录系列文章目录前言1 基本用法总结基础语法桌面管理矩阵均匀间隔矢量矩阵创建矩阵索引前言 介绍了matlab的基本用法 1 基本用法 >> save filename.mat % 将当前工作区的所有变量保存为mat文件 >> load filename.mat % 加载文件>> loa…...

自动化测试——多窗口切换和切换frame

这里写目录标题一、多窗口切换1、base.py&#xff1a;公共代码2、切换句柄的方式1&#xff0c;通过for循环3、切换句柄的方式2&#xff0c;通过索引切换4、源代码二、frame窗口1、什么是frame?2、Frame 分类3、判断要定位的元素在不在frame中两种方式方式一&#xff1a;鼠标选…...

C#中,Elasticsearch.Net判断空字符串

之前有个业务需求&#xff0c;由于最开始存储到es里的&#xff0c;是默认空字符串。 后面程序取数据时&#xff0c;发现需要取空字符串的数据时&#xff0c;不好取出来。 字符串的字段如图&#xff1a; 实际数据如图&#xff1a; 我用的是C#语言&#xff0c;使用的是Elastic…...

Mardi 品牌创始人是谁?一文读懂法国 Mardi Ladin

法国 Mardi Ladin 品牌创始人是La Bergon&#xff08;Baudino Cd L&#xff09;&#xff0c;一位出身法国时尚世家的设计师&#xff0c;品牌的灵感直接来自于 1975 年法国经典电影《表兄妹》中入围奥斯卡最佳女主角的角色 "玛尔蒂 MARDI"。创始人 La Bergon 解析La B…...

企业微信外部群如何通过 API 自动化投递结构化小程序卡片

能力介绍 相比于传统的文字链接&#xff0c;结构化的小程序卡片拥有更高的点击率和更规范的视觉展现。该能力允许开发者通过主动调用 API&#xff0c;直接向指定的企业微信外部群投递原生小程序卡片。接口支持自定义动态配置小程序的 appid、首屏页面路径 pagepath&#xff08…...

避开这些坑,你的Kalibr标定结果才靠谱:数据采集与质量评估实战

避开这些坑&#xff0c;你的Kalibr标定结果才靠谱&#xff1a;数据采集与质量评估实战 在视觉SLAM和三维重建领域&#xff0c;相机标定的精度直接影响最终系统的性能表现。许多开发者虽然能够按照教程完成Kalibr标定的基本流程&#xff0c;却常常对结果质量缺乏判断依据。本文将…...

uView 2.0自定义主题开发:颜色配置与样式覆盖的详细步骤

uView 2.0自定义主题开发&#xff1a;颜色配置与样式覆盖的详细步骤 【免费下载链接】uView2.0 uView UI&#xff0c;是全面兼容nvue的uni-app生态框架&#xff0c;全面的组件和便捷的工具会让您信手拈来&#xff0c;如鱼得水 项目地址: https://gitcode.com/gh_mirrors/uv/u…...

static-php-cli与Swoole集成:构建高性能微服务应用的最佳实践

static-php-cli与Swoole集成&#xff1a;构建高性能微服务应用的最佳实践 【免费下载链接】static-php-cli Build standalone portable PHP binaries on Linux, macOS, Windows, with PHP project together, with popular extensions included. 项目地址: https://gitcode.co…...

7.跨品牌手机刷机原理深度解析|BL 解锁机制 + 分区读写 + 故障修复全方案

摘要 本文系统性地阐述主流品牌智能手机(华为、小米、OPPO、vivo、一加、苹果)刷机与维修的核心原理与操作流程。针对不同品牌底层架构差异,提供从Bootloader解锁、Recovery刷写到系统固件注入的完整技术方案。所有操作步骤均基于实际硬件环境验证,包含完整可运行的Python…...

Prompt 缓存,一次讲明白

每当一个 AI Agent 往前走一步&#xff0c;它其实都在交一笔税。它会重新读取所有内容。系统提示词。 工具定义。 项目上下文。 三轮前已经加载过的内容。每一轮都重新读一遍。这就是 context tax。对长时间运行的 Agent 工作流来说&#xff0c;它往往是整个 AI 基础设施里最贵…...

纤维增强复合材料神经协同优化技术解析

1. 纤维增强复合材料协同优化技术概述纤维增强复合材料因其优异的比强度和比刚度特性&#xff0c;在航空航天、汽车制造等领域得到广泛应用。传统设计方法通常将结构拓扑优化与制造工艺规划分离处理&#xff0c;导致优化结果难以实际制造或性能大幅下降。我们提出的神经协同优化…...

用LLM嵌入向量破解工业微缺陷检测的长尾难题

1. 项目概述&#xff1a;当大模型“看走眼”时&#xff0c;我们该怎么教它识别那些几乎看不见的异常&#xff1f;你有没有遇到过这样的情况&#xff1a;一个工业质检系统&#xff0c;对明显划痕、缺料、锈蚀这类“教科书式”缺陷识别率高达99%&#xff0c;可一旦面对0.3毫米宽的…...

【教程】全流程基于最新导则下的生态环境影响评价技术方法及图件制作与案例实践技术应用

专题一&#xff1a;生态环境影响评价框架及流程 以某既包含陆域、又包含水域的项目为主要案例&#xff0c;兼顾其它类型项目&#xff0c;主要内容包括&#xff1a; 1、生态环境影响评价基本思路与要求&#xff1a;工作程序、报告编制技术要求与规范 2、资料收集与初步踏勘&a…...