用C语言列出Linux或Unix上的网络适配器
上代码:
1. #include <sys/socket.h>
2. #include <stdio.h>
3.
4. #include <netdb.h>
5. #include <ifaddrs.h>
6.
7. int main() {
8. struct ifaddrs *addresses;
9. if(getifaddrs(&addresses) == -1) {
10. printf("getifaddrs failed");
11. return -1;
12. }
13. struct ifaddrs *address = addresses;
14. while(address){
15. int family = address->ifa_addr->sa_family;
16. if(family == AF_INET || family == AF_INET6){
17. printf("%s\t",address->ifa_name);
18. printf("%s\t",family == AF_INET ? "IPv4":"IPv6");
19. char ap[100];
20. const int family_size = family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6);
21. getnameinfo(address->ifa_addr, family_size, ap,sizeof(ap),0,0,NI_NUMERICHOST);
22. printf("\t%s\n",ap);
23. }
24. address = address->ifa_next;
25. }
26. freeifaddrs(addresses);
27. return 0;
28. }
代码解释:
-
sys/socket.h 定义主要socket的操作和结构体,如sockaddr_in、AF_INET(IPv4地址族)、AF_INET6(IPv6地址族)等。
-
stdio.h 提供了通用文件操作的支持和窄字符输入输出的能力,如printf等。
-
netdb.h 这里包含许多对网络操作的定义 ,如addrinfo结构体,这里面有AI_NUMERICHOST,这是说返回数字主机地址作为名字等等。
-
ifaddrs.h 定义ifaddrs结构体和函数 getifaddrs, freeifaddrs。
-
第8行:声明了 ifaddrs结构体指针,这个结构体:
struct ifaddrs {//因为ifaddrs是一个链表的数据结构,所以ifa_next是指向下一个节点的指针struct ifaddrs *ifa_next; char *ifa_name; // 接口名称unsigned int ifa_flags; // SIOCGIFFLAGS的标记,这是与设备io相关的控制标志struct sockaddr *ifa_addr; //接口地址struct sockaddr *ifa_netmask; //接口网络掩码union { // 联合体struct sockaddr *ifu_broadaddr; // 接口广播地址struct sockaddr *ifu_dstaddr; //点到点目的地址} ifa_ifu;#define ifa_broadaddr ifa_ifu.ifu_broadaddr#define ifa_dstaddr ifa_ifu.ifu_dstaddrvoid *ifa_data; //地址特定数据};
- 第9行,getifaddrs函数取回网络适配器数据,这些数据是一个链表,所以将头指针赋给addresses指针变量
- 第13行,struct ifaddrs *address = addresses; 将取回到指针地址赋给另外一个指针变量address,这样通过新指针address变量来遍历所有的数据,而不改变指针addresses的值。
- 第15行,int family = address->ifa_addr->sa_family;取回接口地址的地址族。简单来说就是看它是IPv4还是IPv6 。
- 第21行,getnameinfo函数取回名称
- 第26行,freeifaddrs(addresses);用于释放指针
运行的结果大概是这样的:

相关文章:
用C语言列出Linux或Unix上的网络适配器
上代码: 1. #include <sys/socket.h> 2. #include <stdio.h> 3. 4. #include <netdb.h> 5. #include <ifaddrs.h> 6. 7. int main() { 8. struct ifaddrs *addresses; 9. if(getifaddrs(&addresses) -1) { 10. printf("…...
单片机学习笔记---LED点阵屏显示图形动画
目录 LED点阵屏显示图形 LED点阵屏显示动画 最后补充 上一节我们讲了点阵屏的工作原理,这节开始代码演示! 前面我们已经说了74HC595模块也提供了8个LED,当我们不使用点阵屏的时候也可以单独使用74HC595,这8个LED可以用来测试7…...
Git分支常用指令
目录 1 git branch 2 git branch xx 3 git checkout xx 4 git checkout -b xx 5 git branch -d xx 6 git branch -D xx 7 git merge xx(含快进模式和冲突解决的讲解) 注意git-log: 1 git branch 作用:查看分支 示例: 2 git branch xx 作用&a…...
3.3 Binance_interface APP U本位合约行情-实时行情
Binance_interface APP U本位合约行情-实时行情 Github地址PyTed量化交易研究院 量化交易研究群(VX) py_ted目录 Binance_interface APP U本位合约行情-实时行情1. APP U本位合约行情-实时行情函数总览2. 模型实例化3. 获取一个产品的最优挂单 get_bookTicker4. 获取全部产品…...
机器学习——流形学习
流形学习是一种在机器学习领域中用于理解和分析数据的技术。它的核心思想是,尽管我们通常将数据表示为高维空间中的向量,但实际上数据可能具有较低维度的内在结构,这种结构被称为流形。流形学习的目标是发现并利用数据的这种潜在结构…...
离线数仓(一)【数仓概念、需求架构】
前言 今天开始学习数仓的内容,之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的,相信会有很大的收获。 1、数据仓库概念 1.1、概念 数据仓库&#x…...
物联网测试:2024 年的最佳实践和挑战
据 Transforma Insights 称,到 2030 年,全球广泛使用的物联网 (IoT) 设备预计将增加近一倍,从 151 亿台增至 290 亿台。这些设备以及智能汽车、智能手机等广泛应用于各种官僚机构。 健康视频监视器、闹钟以及咖啡机和冰箱等最受欢迎的家用电器…...
蓝桥杯Web应用开发-CSS3 新特性
CSS3 新特性 专栏持续更新中 在前面我们已经学习了元素选择器、id 选择器和类选择器,我们可以通过标签名、id 名、类名给指定元素设置样式。 现在我们继续选择器之旅,学习 CSS3 中新增的三类选择器,分别是: • 属性选择器 • 子…...
MongoDB聚合:$unionWith
$unionWith聚合阶段执行两个集合的合并,将两个集合的管道结果合并到一个结果集传送到下一个阶段。合并后的结果文档的顺序是不确定的。 语法 { $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }要包含集合的所有文档不…...
人工智能三子棋-人机对弈-人人对弈,谁会是最终赢家?
✅作者简介:大家好我是原始豌豆,感谢支持。 🆔本文由 原始豌豆 原创 CSDN首发🐒 如需转载还请通知⚠ 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言项目实践…...
【leetcode热题100】反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出:[1,4,3,2…...
谷歌 DeepMind 联合斯坦福推出了主从式遥操作双臂机器人系统增强版ALOHA 2
谷歌 DeepMind 联合斯坦福推出了 ALOHA 的增强版本 ——ALOHA 2。与一代相比,ALOHA 2 具有更强的性能、人体工程学设计和稳健性,且成本还不到 20 万元人民币。并且,为了加速大规模双手操作的研究,ALOHA 2 相关的所有硬件设计全部开…...
金融行业专题|证券超融合架构转型与场景探索合集(2023版)
更新内容 更新 SmartX 超融合在证券行业的覆盖范围、部署规模与应用场景。新增操作系统信创转型、Nutanix 国产化替代、网络与安全等场景实践。更多超融合金融核心生产业务场景实践,欢迎阅读文末电子书。 在金融行业如火如荼的数字化转型大潮中,传统架…...
【C语言】C的整理记录
前言 该笔记是建立在已经系统学习过C语言的基础上,笔者对C语言的知识和注意事项进行整理记录,便于后期查阅,反复琢磨。C语言是一种面向过程的编程语言。 原想在此阐述一下C语言的作用,然而发觉这些是编程语言所共通的作用&#…...
C/C++模板初阶
目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢? void Swap(int&…...
linux系统下vscode portable版本的c++/Cmake环境搭建001
linux系统下vscode portable版本的Cmake环境搭建 vscode portable 安装安装基本工具安装 build-essential安装 CMake final script code安装插件CMake Tools & cmakeC/C Extension Pack Testsettings,jsonCMakeLists.txt调试和运行工具 CG 目的:希望在获得一个新…...
【QT+QGIS跨平台编译】之三十一:【FreeXL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、FreeXL介绍二、文件下载三、文件分析四、pro文件五、编译实践一、FreeXL介绍 【FreeXL跨平台编译】:Windows环境下编译成果(支撑QGIS跨平台编译,以及二次研发) 【FreeXL跨平台编译】:Linux环境下编译成果(支撑QGIS跨平台编译,以及二次研发) 【FreeXL跨平台…...
2024年 前端JavaScript入门到精通 第一天
主要讲解JavaScript核心知识,包含最新ES6语法,从基础到API再到高级。让你一边学习一边练习,重点知识及时实践,同时每天安排大量作业,加深记忆,巩固学习成果。 1.1 基本软件与准备工作 1.2 JavaScript 案例 …...
155基于matlab 的形态学权重自适应图像去噪
基于matlab 的形态学权重自适应图像去噪;通过串并联的滤波降噪对比图,说明并联降噪的优越性。输出降噪前后图像和不同方法的降噪情况的信噪比。程序已调通,可直接运行。 155matlab 自适应图像降噪 串并联降噪 (xiaohongshu.com)...
Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案
Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 问题发现:驱动管理中的隐形痛点与风险 系…...
TurboQuant革命:KV-Cache压缩技术如何重塑大模型推理经济
上一篇:Qwen3.5-Max-Preview与国产大模型技术突破:阿里通义千问2026最新进展全解析 下一篇:2026年AI-Agent产业化全景:从概念验证到规模化部署的完整路径 摘要 2026年3月24日,Google Research发布了一项名为TurboQuan…...
DeepSeek-Coder-V2终极指南:如何免费打造你的专属AI编程助手
DeepSeek-Coder-V2终极指南:如何免费打造你的专属AI编程助手 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 …...
Real-ESRGAN-GUI:如何用AI双引擎将模糊图片一键变高清
Real-ESRGAN-GUI:如何用AI双引擎将模糊图片一键变高清 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片、低分辨率的动漫图片而烦恼吗&…...
Hunyuan-MT-7B多语种能力:Pixel Language Portal在联合国六种官方语言互译中的表现
Hunyuan-MT-7B多语种能力:Pixel Language Portal在联合国六种官方语言互译中的表现 1. 引言:当像素冒险遇见多语言翻译 在全球化交流日益频繁的今天,语言障碍仍然是横亘在不同文化之间的无形壁垒。传统翻译工具往往给人冰冷、机械的使用体验…...
EmbeddingGemma-300m部署指南:Ollama镜像+Prometheus监控+日志追踪一体化
EmbeddingGemma-300m部署指南:Ollama镜像Prometheus监控日志追踪一体化 想快速搭建一个功能强大、易于管理的文本向量化服务吗?EmbeddingGemma-300m作为谷歌推出的轻量级嵌入模型,凭借其3亿参数和出色的性能,是构建本地语义搜索、…...
掌握5个核心配置技巧:OpenCore-Configurator从入门到专家
掌握5个核心配置技巧:OpenCore-Configurator从入门到专家 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore-Configurator(简称…...
从SolidWorks到ROS:六自由度机械臂URDF模型转换实战指南
1. 从SolidWorks到ROS的桥梁:URDF模型转换概述 当你费尽心思在SolidWorks中完成了六自由度机械臂的三维建模,看着那些精密的齿轮和连杆在软件中流畅转动时,脑海中可能已经浮现出它在ROS环境中大展身手的场景。但问题来了:如何让这…...
无损视频剪辑效率全攻略:5分钟掌握革新性剪辑技术
无损视频剪辑效率全攻略:5分钟掌握革新性剪辑技术 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾因视频剪辑软件的漫长渲染过程而错失发布良机&a…...
终极指南:如何用Captum快速理解PyTorch模型的决策逻辑
终极指南:如何用Captum快速理解PyTorch模型的决策逻辑 【免费下载链接】captum Model interpretability and understanding for PyTorch 项目地址: https://gitcode.com/gh_mirrors/ca/captum 在当今人工智能快速发展的时代,PyTorch已成为深度学习…...
