问题

在Windows系统中,可以支持多个网卡,比如有线的以太网卡,无线网卡,虚拟网卡等。如下图所示:

每一张网卡由不同的类型,也可以分别被用户启用或禁用。

对于单独一张给定的网卡,其IP地址可以是DHCP自动分配,也可以手动设定。

进而,在手动设定模式下,还可以添加多个IP地址。如下图所示:

好像,情况越来越复杂!

那么,如何通过代码的方式来获取所有的这些IP地址呢?

废话少说,直接上代码吧!

代码解析

以上代码结构简单,首先调用GetAdaptersAddresses获取系统所有网卡,然后循环每个网卡。对于每个网卡,通过FirstUnicastAddress成员获取该网卡的起始IP,然后循环获取该网卡的所有IP。

注意,这里通过判断结构体的OperStatus属性,实现了仅获取已启用网卡的IP地址列表并过滤掉了本地回环地址的功能。

注意事项

本文代码仅作为演示目的,并没有配置合理的错误处理功能,在真实的项目中,应该考虑加上。

总结

在C++中获取本机IP地址是一个十分常见的需求,但如果需要这个功能,而手边却没有相关的代码,确实是一件比较伤脑筋的事情。

本文通过定义一个通用的函数展示了如何获取本机所有的IP地址。但是需要说明的是,这个函数并没有通过一个合适的返回值来输出IP地址,可以考虑使用vector列表并配合自定义结构体来对外部输出结果,这样就更具备可重用性了。

Enjoy!

java获取本机ip地址_代码片段:获取系统所有IP相关推荐

  1. 电子邮件服务器的ip地址_可用的不同类型的IP地址

    有几种不同类型的IP地址可用.尽管无论哪种类型,IP地址的结构都是相同的,但它们的作用不同.例如,您有公用IP地址,专用IP地址,静态IP地址和动态IP地址. 动态和静态之间的区别是动态IP地址会更改 ...

  2. python获取小王的ip地址_用Python获取本机的IP地址

    Linux import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket. ...

  3. 获取访问照片获取ip地址_如何始终获取想要的照片

    获取访问照片获取ip地址 There are few things more annoying than getting home after a long day photographing, im ...

  4. ping不通自己的ip地址_如何批量Ping N个IP地址,掌握一个命令让你节省N小时,让老板给你加鸡腿!...

    这是一个信息爆炸的时代,过多无用的信息.公众号只会让我们视觉疲劳.基于这个原因,本公众号致力于为广大网工分享知识.分享招聘信息.传播有价值的信息,运行4年多以来,已慢慢成为网工圈最受信赖的公众号.了解 ...

  5. jssdk 获取微信收货地址_微信JSSDK获取当前地理位置信息

    默认为 wgs84 的 gps 坐标,如果要返回直接给 openLocation 用 的火星坐标,可传入 'gcj02' success: function (res) { var latitude  ...

  6. 常识-java获取本机ipv6地址以及关闭临时ipv6地址

    关闭临时ipv6地址 临时ipv6有助于本机安全,然而有时用不到,比如用其进行长久的ftp链接,随时待命是不合适的 右键管理员cmd,输入命令关闭临时ipv6 netsh interface ipv6 ...

  7. java ip地址查询接口_java获取ip地址与网络接口的方法示例

    java获取ip地址与网络接口的方法示例 发布时间:2020-09-20 23:57:52 来源:脚本之家 阅读:66 作者:骏马金龙 java.net包 大家应该都知道,网络相关对象在java.ne ...

  8. android 获取网卡mac_Android获取本机Mac地址及IP地址方法

    1.Android  获取本机Mac 地址方法: 需要在AndroidManifest.xml文件中添加权限: public String getLocalMacAddress() { WifiMan ...

  9. js获取本机mac地址,IP地址

    <!DOCTYPE HTML> <html> <head>     <title>js获取本机mac地址,IP地址,计算机名</title> ...

最新文章

  1. 组合数学实验——二分图匹配算法
  2. java获取字符串最长_基于java查找最长字符串代码实例
  3. 上海2021年高考成绩排位查询,2021年上海各高中高考成绩排名及放榜最新消息
  4. cxf整合spring代码
  5. FB面经Prepare: Email User
  6. Nginx的rewrite之rewrite_log指令
  7. 2020牛客国庆集训派对day4 What Goes Up Must Come Down
  8. sqlserver 存储过程 增加
  9. GNU make manual 翻译( 一百一十一)
  10. redis系列之1----redis简介以及linux上的安装
  11. IDEA运行test出现 Failed to execute goal org.codehaus.mojo:exec-maven-plugin:16.0.0:exec (default-cli) on
  12. CUDA ---- Hello World From GPU
  13. Linux Irq domain
  14. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
  15. 单片机交通灯实训c语言编程,单片机交通灯程序(C语言).docx
  16. 鸿蒙子系统解读-Camera子系统篇
  17. java 案例(售卖橙子)
  18. python中reduce什么意思_python中的reduce
  19. 2022-2028年中国SIP行业竞争现状及投资策略研究报告
  20. 科研篇一:NeurIPS2019 分类整理-对抗样本Meta-Learning

热门文章

  1. Linux 修改SSH端口 和 禁止Root远程登陆
  2. 转的:SQL执行提高效率的多种方法
  3. [收藏]用CSS构建iframe效果
  4. Tensorflow——张量
  5. PostgreSQL用户角色和权限管理
  6. 数据和云2020年度最受欢迎的Top10文章、专栏、文档、直播资源大放送(建议收藏)...
  7. MongoDB DBA常用的NoSQL语句(全)
  8. 【作者面对面问答】包邮送《Redis 5设计与源码分析》5本
  9. innodb实例损坏情况下恢复数据及相关工具的开发
  10. 数据膨胀了?你的数仓又没有空间了?