QT 中获取本机ip的方法

记录自己在学习中遇到的问题:

在使用tcp时绑定自己的端口号时,每次都要手动输入或者在代码编写的时候固定死。就在想有没有便捷的方法,于是我便找到了一种不太美好的解决方法:

QList QNetworkInterface::allAddresses () [static]

This convenience function returns all IP addresses found on the host machine. \It is equivalent to calling addressEntries() on all the objects returned by allInterfaces() to obtain lists of QHostAddress objects then calling QHostAddress::ip() on each of these.

程序中使用一个label来显示获取的ip,程序如下:

#include <QtNetwork>

ui->iplabel->setText(QNetworkInterface().allAddresses().at(0).toString());

//编译出错,需要在工程pro文件中添加,在

QT += core gui network

这样在我现在的电脑上运行可以自动获取到了。但是每台电脑上,ip地址的顺序可能略有不同,所以程序再换一个机子运行就还是会出现问题,与作者本意不符。

于是乎便又去寻找:

   QHostAddress addr;
    //通过遍历获取到本机ip
    QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
      foreach(QHostAddress address,info.addresses())
      {
        if(address.protocol()==QAbstractSocket::IPv4Protocol)
        {
          qDebug()<<address.toString(); //输出IPV4的地址
          addr=address;
        }
      }

 虽说打印了两次,但结果来说应该是可行的,后续再找到啥方法就再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值