博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qt获得本地IP的方法
阅读量:3948 次
发布时间:2019-05-24

本文共 2485 字,大约阅读时间需要 8 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

本文博客链接:,作者:jdh,转载请注明.

环境:Ubuntu10.04 + Qt4.7.0

Linux获得本地IP的方法,我尝试了两种

1.用QHostInfo类解析

QHostInfo类可以解析域名,理论上也可以解析本地IP,可是经过尝试,我发现解析出来的IP是127.0.0.1是本地回环地址,不符合我的需求。

代码:

//获取本地IP    QHostInfo info=QHostInfo::fromName(QHostInfo::localHostName());    //QHostInfo info=QHostInfo::fromName("www.google.com");    //Sys_Res.local_ip = info.addresses().first().toString();    //qDebug() << Sys_Res.local_ip;    if (info.error() != QHostInfo::NoError)    {         qDebug() << "Lookup failed:" << info.errorString();         return;    }    for (int i = 0;i < info.addresses().size();i++)    {         qDebug() << "Found address:" << info.addresses()[i].toString() << endl;    }
2.用QNetworkInterface解析

用这个类可以获取系统底层的网络参数,经过实践是可行的,我参考的文章:

参考代码截取:

2.通过QNetworkInterface类来获取本机的IP地址和网络接口信息。QNetworkInterface类提供了程序所运行时的主机的IP地址和网络接口信息的列表。在每一个网络接口信息中都包含了0个或多个IP地址,而每一个IP地址又包含了和它相关的子网掩码和广播地址,它们三者被封装在一个QNetworkAddressEntry对象中。网络接口信息中也提供了硬件地址信息。我们将widge.cpp构造函数中以前添加的代码删除,然后添加以下代码。QList
list = QNetworkInterface::allInterfaces();    //获取所有网络接口的列表    foreach(QNetworkInterface interface,list)    {  //遍历每一个网络接口        qDebug() << “Device: “<
entryList = interface.addressEntries();     //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址        foreach(QNetworkAddressEntry entry,entryList)        {
//遍历每一个IP地址条目            qDebug()<<”IP Address: “<
其实,如果我们只想利用QNetworkInterface类来获取IP地址,那么就没必要像上面那样复杂,这个类提供了一个便捷的函数allAddresses()来获取IP地址,例如:QString address = QNetworkInterface::allAddresses().first().toString();3.总结。在这一节中我们学习了如何来查找本机网络设备的相关信息。其实,以后最常用的还是其中获取IP地址的方法。我们以后可以利用一个函数来获取IP地址:QString Widget::getIP()  //获取ip地址{    QList
list = QNetworkInterface::allAddresses();    foreach (QHostAddress address, list)    {       if(address.protocol() == QAbstractSocket::IPv4Protocol)//我们使用IPv4地址            return address.toString();    }       return 0;}
把这段代码嵌入到我的程序中:

QList
list = QNetworkInterface::allAddresses();    foreach (QHostAddress address, list)    {        if(address.protocol() == QAbstractSocket::IPv4Protocol)        {            //IPv4地址            if (address.toString().contains("127.0."))            {                continue;            }            Sys_Res.local_ip = address.toString();        }    }    if (Sys_Res.local_ip == "127.0.0.1")    {        qDebug() << "get local ip fail";        return;    }    else    {        qDebug() << Sys_Res.local_ip;    }

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
Js,jQuery事件、效果大全------Sestid
查看>>
CSS块元素、内联元素、内联块元素详解------Sestid
查看>>
Js实现跟随鼠标移动的小球------Sestid
查看>>
HTML图像,链接,列表,表格等详细介绍------Sestid
查看>>
Js实现的俄罗斯方块小游戏------Sestid
查看>>
Js实现贪吃蛇小游戏------Sestid
查看>>
jQuery常用方法(持续更新)
查看>>
原生js实现自定义倒计时效果------Sestid
查看>>
原生js实现生成随机验证码=------Sestid
查看>>
js实现购物时选带属性的商品------Sestid
查看>>
点击出现对应界面(第二个界面可以选择显示内容)------Sestid
查看>>
Js实现炫酷仿抖罗盘时钟------Sestid
查看>>
vivo官网鼠标触碰图片拉长------Sestid
查看>>
canvas画布实现的集中效果
查看>>
Js实现点击置顶效果(带动画)
查看>>
Js实现input全选、全不选、反选功能------Sestid
查看>>
纯css实现好看的背景------Sestid
查看>>
为什么我的CSDN上都是开关灯??????Js实现开灯关灯特效
查看>>
Js实现生成自定义输入行列宽高表格------Sestid
查看>>
Js实现购物车加减,价格计算等功能
查看>>