• 1836阅读
  • 6回复

很简单的代码,但为何Qt给出如此奇怪的字符串? [复制链接]

上一主题 下一主题
离线纹枰老妖
 

只看楼主 正序阅读 楼主  发表于: 2020-10-17
下面是一段就几句话的代码,看图中红框圈住的内容,然后看运行结果【另一个红框内】,我想问,为何Qt给出关于我电脑的IP地址如此奇怪?正确格式不应该是类似【192.168...】之类的吗?

离线akecbz

只看该作者 6楼 发表于: 2020-12-10
那是IPV6的地址,你应该抓取IPV4的,楼上有正解!
离线liudianwu

只看该作者 5楼 发表于: 2020-10-18
listAddress.at(2)换成listAddress.at(0)或者1试试,你这直接就显示后面的干嘛?你可以过滤啊,这种一般是IPV6的地址。
  1. QStringList OnvifHelper::getLocalIps()
  2. {
  3.     QStringList ips;
  4.     QList<QNetworkInterface> netInterfaces = QNetworkInterface::allInterfaces();
  5.     foreach (const QNetworkInterface  &netInterface, netInterfaces) {
  6.         //移除虚拟机和抓包工具的虚拟网卡
  7.         QString humanReadableName = netInterface.humanReadableName().toLower();
  8.         if (humanReadableName.startsWith("vmware network adapter") || humanReadableName.startsWith("npcap loopback adapter")) {
  9.             continue;
  10.         }
  11.         //过滤当前网络接口
  12.         bool flag = (netInterface.flags() == (QNetworkInterface::IsUp | QNetworkInterface::IsRunning | QNetworkInterface::CanBroadcast | QNetworkInterface::CanMulticast));
  13.         if (flag) {
  14.             QList<QNetworkAddressEntry> addrs = netInterface.addressEntries();
  15.             foreach (QNetworkAddressEntry addr, addrs) {
  16.                 //只取出IPV4的地址
  17.                 if (addr.ip().protocol() == QAbstractSocket::IPv4Protocol) {
  18.                     QString ip4 = addr.ip().toString();
  19.                     if (ip4 != "127.0.0.1") {
  20.                         ips.append(ip4);
  21.                     }
  22.                 }
  23.             }
  24.         }
  25.     }
  26.     return ips;
  27. }



1条评分金钱+3
纹枰老妖 金钱 +3 - 2020-10-18
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线flyer_2001

只看该作者 4楼 发表于: 2020-10-18
那是ip6返回结果
quint32  nIp4 = addr.toIPv4Address();
QHostAddress host_addr = QHostAddress(nIp4);
QString  addr_str = host_addr .toString();
1条评分金钱+3
纹枰老妖 金钱 +3 - 2020-10-18
离线20091001753

只看该作者 3楼 发表于: 2020-10-17
显然,你知道是对 QHostAddress 的使用有疑惑。

这时候有2个方向:
首先,Qt Creator 里有详细的开发文档,在“帮助→索引”填 QHostAddress 就看到。
然后,可以百度 QHostAddress ,也有详细的介绍。
1条评分金钱+1
纹枰老妖 金钱 +1 - 2020-10-18
(づ ̄ 3 ̄)づ
离线纹枰老妖

只看该作者 2楼 发表于: 2020-10-17
我是照着书上例子来的,书上显示的格式是【192.168.101.101】,到了我这里却成了e438之类的鬼了,我怎么样才能像书上那样显示162...之类的啊
离线九重水

只看该作者 1楼 发表于: 2020-10-17
IPV4 地址才会像你想象的那样显示吧,比如:127.0.0.1
IPV6地址好像显示有点不同,

1条评分金钱+1
纹枰老妖 金钱 +1 - 2020-10-18
快速回复
限100 字节
 
上一个 下一个