首页 > 其他分享 >Qt5获取本机IP踩坑总结

Qt5获取本机IP踩坑总结

时间:2022-10-22 22:12:29浏览次数:80  
标签:Qt5 ip pos 网卡 item split IP 本机

环境

  • win7 64位 , cmake + qt5.9.4

获取本机IP代码

问题代码

  • 其实也不能说是问题, 只是在在某些条件下获取的本机IP不全
  • 这里只贴出关键函数的代码
	QStringList QToolkits::local_ip(const IP_VERSION&& ipv) noexcept
	{
		QStringList list_ret_value;

		const QList<QHostAddress>&& ipaddress_list = QNetworkInterface::allAddresses();

		for (const auto& item : ipaddress_list)
		{
			QString&& ip_item = item.toString();
			int split_pos = ip_item.indexOf('%');

			if (-1 != split_pos)
			{
				if (1 < split_pos)
				{
					split_pos = split_pos - 1;
				}
				ip_item = ip_item.left(split_pos);
			}

			if (IPV4 == ipv)
			{
				if (true == ip_item.contains(":"))
				{
					continue;
				}
			}
			else if (IPV6 == ipv)
			{
				if (true == ip_item.contains(":"))
				{
					;
				}
				else
				{
					continue;
				}
			}

			list_ret_value << ip_item;
		}

		return list_ret_value;
	}

现象

  • 现在有两种使用场景, 使用环境中 win7 存在虚拟网卡, 没有接通网线, 但是设置本机Ip
    • Qt5.9.4 + cmake
    • Qt5.9.4 + Vs2015
  • 用上面的这段问题代码, 当cmake+Qt5.9.4中使用时,无法获取虚拟网卡的IP
  • 用上面的这段问题代码, 当vs2015+Qt5.9.4中使用时,却可以获取虚拟网卡的IP

QNetworkInterface::allAddresses()

  • 官方文档
  • allAddresses 函数 会获取本机所有 网卡处于活跃状态的IP。 为什么? 文档中时这样说的:that are in the QNetworkInterface::IsUp state
  • 那么QNetworkInterface::IsUp的定义是:

疑惑

  • 今天查了好久官方文档,依然没有具体结果。

解决方案

标签:Qt5,ip,pos,网卡,item,split,IP,本机
From: https://www.cnblogs.com/pandamohist/p/16817419.html

相关文章

  • Prometheus对OpenStack的监控Tips
    OpenStack的监控分为三方面:监控、报警;诊断、追踪;故障处理。监控和报警是发现问题的第一步,故障解决的主要问题是面对大规模部署OpenStack的复杂环境,如何准确、详尽地报告系统......
  • TypeScript 复习进阶三部曲 (1) – 把 TypeScript 当强类型语言使用
    前言本来是想照着TypeScript官网handbook写教程的.但真的没那个mood.还是用我自己的方式写教程(其实是复习和进阶笔记)吧 学习TypeScript的三个阶段(三部......
  • RIP路由欺骗攻击与防御策略
    一.工作目的掌握基于RIP路由欺骗攻击过程和RIP源端鉴别配置方法二.实验环境Vm1:win7客户机vm2:win2008web服务器三.实验拓扑              ......
  • PipeCAD-1.0.25 发布啦!
    PipeCAD-1.0.25发布啦![email protected],三维管道设计软件,三维工厂设计软件,三维配管软件PipeCAD1.0.25版本发布啦!主要增加管道模型修改版本记录REVI;......
  • 05.Linux配置静态IP地址
    [root@localhostnetwork-scripts]#catifcfg-enp0s3TYPE="Ethernet"BOOTPROTO="static"IPADDR="192.168.43.202"NETMASK=255.255.255.0GATEWAY=192.168.43.1DNS1=1......
  • mathematical tip 1
    mathematicaltip标签(空格分隔):mathematics1.additiontimedifference2.transformation\((a+b)\times(a+(-b))=a^2-b^2\)->c:coefficients\((a+c\timesb)\t......
  • 【JavaScript】事件的冒泡,委派,绑定和传播
    文章目录​​冒泡事件​​​​特性:​​​​阻止冒泡事件的两种方法​​​​cancelBubble​​​​stopPropagation()​​​​委派事件​​​​特性​​​​获取点击的元素​......
  • c# System.Web.Script.Serialization的引用
    https://blog.csdn.net/qingkaqingka/article/details/88812351c#开发的程序,需要引用到System.Web.Script.Serialization。习惯在解决方案右键添加引用,发现添加应用窗口没......
  • 《MiniPRO H750开发指南》第六十四章 综合测试实验
    第六十四章综合测试实验​为了方便大家使用和验证综合例程,本章内容是综合例程的使用介绍。目的是展示STM32H7的强大处理能力,并且可以测试开发板的大部分功能。本实验代码只......
  • TypeScript infer All In One
    TypeScriptinferAllInOnehttps://www.typescriptlang.org/docs/handbook/type-inference.htmlhttps://www.cnblogs.com/xgqfrms/tag/infer/demos//Herewedeclar......