查看完整版本: [-- 很简单的代码,但为何Qt给出如此奇怪的字符串? --]

QTCN开发网 -> Qt安装与发布 -> 很简单的代码,但为何Qt给出如此奇怪的字符串? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

纹枰老妖 2020-10-17 14:47

很简单的代码,但为何Qt给出如此奇怪的字符串?

下面是一段就几句话的代码,看图中红框圈住的内容,然后看运行结果【另一个红框内】,我想问,为何Qt给出关于我电脑的IP地址如此奇怪?正确格式不应该是类似【192.168...】之类的吗?
[attachment=21973]

九重水 2020-10-17 15:02
IPV4 地址才会像你想象的那样显示吧,比如:127.0.0.1
IPV6地址好像显示有点不同,


纹枰老妖 2020-10-17 15:35
我是照着书上例子来的,书上显示的格式是【192.168.101.101】,到了我这里却成了e438之类的鬼了,我怎么样才能像书上那样显示162...之类的啊

20091001753 2020-10-17 18:01
显然,你知道是对 QHostAddress 的使用有疑惑。

这时候有2个方向:
首先,Qt Creator 里有详细的开发文档,在“帮助→索引”填 QHostAddress 就看到。
然后,可以百度 QHostAddress ,也有详细的介绍。

flyer_2001 2020-10-18 09:05
那是ip6返回结果
quint32  nIp4 = addr.toIPv4Address();
QHostAddress host_addr = QHostAddress(nIp4);
QString  addr_str = host_addr .toString();

liudianwu 2020-10-18 09:07
listAddress.at(2)换成listAddress.at(0)或者1试试,你这直接就显示后面的干嘛?你可以过滤啊,这种一般是IPV6的地址。
  1. QStringList OnvifHelper::getLocalIps()
    {
        QStringList ips;
        QList<QNetworkInterface> netInterfaces = QNetworkInterface::allInterfaces();
        foreach (const QNetworkInterface  &netInterface, netInterfaces) {
            //移除虚拟机和抓包工具的虚拟网卡
            QString humanReadableName = netInterface.humanReadableName().toLower();
            if (humanReadableName.startsWith("vmware network adapter") || humanReadableName.startsWith("npcap loopback adapter")) {
                continue;
            }

            //过滤当前网络接口
            bool flag = (netInterface.flags() == (QNetworkInterface::IsUp | QNetworkInterface::IsRunning | QNetworkInterface::CanBroadcast | QNetworkInterface::CanMulticast));
            if (flag) {
                QList<QNetworkAddressEntry> addrs = netInterface.addressEntries();
                foreach (QNetworkAddressEntry addr, addrs) {
                    //只取出IPV4的地址
                    if (addr.ip().protocol() == QAbstractSocket::IPv4Protocol) {
                        QString ip4 = addr.ip().toString();
                        if (ip4 != "127.0.0.1") {
                            ips.append(ip4);
                        }
                    }
                }
            }
        }

        return ips;
    }




akecbz 2020-12-10 11:14
那是IPV6的地址,你应该抓取IPV4的,楼上有正解!


查看完整版本: [-- 很简单的代码,但为何Qt给出如此奇怪的字符串? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled