首页| 论坛| 消息

标题:很简单的代码,但为何Qt给出如此奇怪的字符串?
作者:纹枰老妖
日期:2020-10-17 14:47
内容:

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


#1 [九重水 10-17 15:02]
IPV4 地址才会像你想象的那样显示吧,比如:127.0.0.1
IPV6地址好像显示有点不同,
#2 [纹枰老妖 10-17 15:35]
我是照着书上例子来的,书上显示的格式是【192.168.101.101】,到了我这里却成了e438之类的鬼了,我怎么样才能像书上那样显示162...之类的啊
#3 [20091001753 10-17 18:01]
显然,你知道是对 QHostAddress 的使用有疑惑。
这时候有2个方向:
首先,Qt Creator 里有详细的开发文档,在“帮助→索引”填 QHostAddress 就看到。
然后,可以百度 QHostAddress ,也有详细的介绍。
#4 [flyer_2001 10-18 09:05]
那是ip6返回结果
quint32nIp4 = addr.toIPv4Address();
QHostAddress host_addr = QHostAddress(nIp4);
QStringaddr_str = host_addr .toString();
#5 [liudianwu 10-18 09:07]
listAddress.at(2)换成listAddress.at(0)或者1试试,你这直接就显示后面的干嘛?你可以过滤啊,这种一般是IPV6的地址。
QStringList OnvifHelper::getLocalIps()
{
QStringList ips;
QList 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 addrs = netInterface.addressEntries();
foreach (QNetworkAddressEntry addr, addrs) {
//只取出IPV4的地址
if (addr.ip().protocol() == QAbstractSocket::IPv4Protocol) {
QString ip4 = addr.ip().toString();
&n ..

<< 1 2 >> (1/2)

回复 发表
主题 版块