QT - 获取本地IPV4 地址 + C++根据域名获取IP地址

c++ qt如何获取局域网ip地址 本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问 注意包的引用 // 使用Qt的网络包 #include <QString> #include <QtNetwork/QHostInfo> #include <QtNetwork/QNetworkInterface> // 获取ip地址 QString SocketUtil::getLocalIp() { // 循环遍历获取所有的ip地址 foreach(const QHostAdd. 阅读详情

直接上代码,大家想要可以自行封装成函数


方法一:使用QHostAddress

//QList<QHostAddress> address = QNetworkInterface::allAddresses();
foreach (QHostAddress ptr , QNetworkInterface::allAddresses())
{
    if(ptr.protocol() == QAbstractSocket::IPv4Protocol){// 获取ipv4地址
        if(!ptr.isLoopback()) // 过滤本地回环127.0.0.1
            qDebug() << "address: " <<ptr.toString()<< endl; // 在这里输出本地局域网ip
    }
}

方法二:使用QNetworkInterface从本地所有网卡获取活跃的IP

 //qt获得网卡信息状态
 QString rip="";
 //QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
 foreach (QNetworkInterface netInterface, QNetworkInterface::allInterfaces())
 {
     if (!netInterface.isValid())//包含有关网络接口的有效信息,则返回true。
         continue;

     QNetworkInterface::InterfaceFlags flags = netInterface.flags();
     // 网络接口处于活动状态 && 不是本地回环地址
     if (flags.testFlag(QNetworkInterface::IsRunning)
     && !flags.testFlag(QNetworkInterface::IsLoopBack))
     {
         // 遍历每一个IP地址
         QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
         foreach(QNetworkAddressEntry entry, entryList)
         {
             if(entry.ip().toString()!="" && entry.ip().toString()!="0.0.0.0")
             {
                 rip=entry.ip().toString();
                 break;//获取到第一个活跃的跳出
             }
         }
     }
 }

QT ip地址,格式为 “::ffff:127.0.0.1” 解决方法


买一送一:C++根据域名获取IP地址


使用gethostbyname()函数实现。win平台可能要包含<WinSock2.h>和绑定WSAData

<netdb.h>定义内的 struct hostent结构如下:

struct hostent {
	 char  *h_name;            /* 官方域名,但是似乎并不绝对,百度就是www.a.shifen.com */
	 char **h_aliases;         /* 别名列表,是个二级指针 */
	 int    h_addrtype;        /* 地址类型,为AF_INET或AF_INET6之一,百度返回2,故为真应该是AF_INET */
     int    h_length;          /* 保存IP地址长度。IPv4 的长度为 4 个字节,IPv6 的长度为 16 个字节。 */
     char **h_addr_list;       /* 地址列表,以NULL结尾 */
 }
 #define h_addr h_addr_list[0] /* 向后兼容,返回地址列表的第一个地址,注意返回的是指针 */

上代码:

#include <iostream>
#include <string>

extern "C"{
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
}

#ifdef __WIN32__
#include <WinSock2.h>
#else
#include <netdb.h>
#endif

using namespace std;

int main(void)
{
    string buf;

    // 链接和绑定sock-api库,要在windows下面开发socket都需要这样做
#ifdef __WIN32__
    WSAData wsadata;
    WSAStartup(MAKEWORD(2, 2), &wsadata);
#endif

	// 分析之
    struct hostent * conText = gethostbyname("www.baidu.com");
    if(!conText){
        cout << "get host name ERROR!";
        #ifdef __WIN32__
        WSACleanup();
        #endif
        return 0;
    }

	// 获取主名和别名
    cout << "the office name :" << conText->h_name << endl;
    for (char ** tmp = &conText->h_aliases[0]; *tmp != NULL;tmp++)
        cout << "the alternative name:" << *tmp << endl;

	//获取地址类型
    cout <<  " Addres type :" << conText->h_addrtype << endl;

	// 获取IP地址
    for (char ** tmp = &conText->h_addr_list[0]; *tmp != NULL;tmp++){
    	// struct in_addr tmpAddr = *reinterpret_cast<struct in_addr*>(*tmp);
        cout << "the ip :" << inet_ntoa( *reinterpret_cast<struct in_addr*>(*tmp) ) << endl;
  
    cout << "直接获得" << inet_ntoa( *reinterpret_cast<struct in_addr*>(conText->h_addr) ) << endl;

#ifdef __WIN32__
    WSACleanup();
#endif
    return 0;
}


echo 输出彩色字符串:

这段是个人常用,但单独写个文章又感觉没必要,于是加的,方便查看_(:з」∠)_

  • 模板:
echo -e "\e[xx;xxm 你的内容 \e[0m"
  • 解析:
    -e 是echo的转义字符意思。
    \e[xxm xx是数字选项,选择字体属性、颜色、背景色用的,对顺序没有要求

  • 各类数字选项:

背景色:
黑色背景:40
红色背景:41
绿色背景:42
黄色背景:43
蓝色背景:44
洋红背景:45
青色背景:46
白色背景:47

字体颜色:
黑色字体:30
红色字体:31
绿色字体:32
黄色字体:33
蓝色字体:34
洋红字体:35
青色字体:36
白色字体:37

属性
0: OFF
1: 高亮显示
3: 斜体
4: 下划线
5: 闪烁
7: 反色显示
8: 不可见
9: 删除线

echo -e "\e[9;32m  hello \e[0m"  #绿色字体、删除线的hello
QT实现UDP通信 1)UDP(User Datagram Protocol,用户数据报协议)UDP是一个轻量级、不可靠、面向数据报的、无连接的传输层协议,多用于可靠性要求不严格,不是非常重要的传输,如直播、视频会议等等。2)Qt中QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报,”Socket”即套接字,套接字即IP地址+端口号。其中IP地址指定了网络中的一台主机,二端口号则指定了该主机上的一个应用程序,端口号只具有本地意义,使用套接字即可实现网络上的两个应用程序之间的通信。 阅读详情

相关推荐

Qt中的QHostAddress

QHostAddress是Qt网络模块中用于处理IP地址和主机名的类。下面我们将介绍一些常用的函数。QHostAddress::fromName用于将主机名解析为对应的IP地址,如果解析失败则返回一个无效的对象。QHostAddress::protocol用于判断一个地址是IPv4还是IPv6地址。以上就是QHostAddress的一些常用函数,它们可以帮助我们轻松地处理IP地址和主机名。QHostAddress::isNull用于判断一个地址是否有效。Qt中的QHostAddress。

CyberWizarDD的博客 898

Qt获取本机IP地址的方法

使用Qt中的QHostInfo来获取本地IP地址 QString hostNme = QHostInfo::localHostName(); QHostInfo hostInfo = QHostInfo::fromName(hostNme); auto addList = hostInfo.addresses(); if (addList.isEmpty()) { Q_ASSERT(false); } for (int i = 0;i < addList.count();++i)

weixin_39308337的博客 5567

QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数

B类地址,斜线记法,192.168.60.1/24其中192.168.10.1是IP字符串strIP,24是子网掩码1的个数nSubnetMas,其中要求18<=nSubnetMas<=30 #include "qdlgiptool.h" #include "ui_qdlgiptool.h" #include <QDebug>// #include <QtMath>//数学函数 #include <QMessageBox>// //单击“计算”按钮消息处理函

星如雨落 1734

Qt获取本机IP、MAC、IPV6子网掩码等网络信息

Qt获取本机IP、MAC、IPV6子网掩码等网络信息

qq_47355554的博客 1134

AI Agent Harness Engineering 创业PMF验证工具:用户满意度+留存率+业务指标监测表

在AI Agent创业的浪潮中,我们看到了无数产品如雨后春笋般涌现,但最终能够真正找到PMF并存活下来的却寥寥无几。根据CB Insights的数据,创业公司失败的首要原因(占42%)是"没有市场需求"——换句话说,就是没有找到PMF。AI Agent产品由于其特殊性(交互范式的变革、技术复杂度高、用户期望管理困难等),PMF验证变得更加具有挑战性。传统的SaaS产品PMF验证框架虽然有参考价值,但无法完全适用于AI Agent这种新型产品形态。

AI智能探索者的博客 332

保姆级教程:用rosbag录制和回放你的第一个ROS机器人数据(附C++/Python代码)

本文提供了一份详细的ROS机器人数据录制与回放教程,涵盖从命令行操作到C++/Python编程实现的全流程。通过rosbag工具,开发者可以高效记录和回放机器人运行时的传感器数据和控制指令,适用于故障复现、算法调试等多种场景。教程还包含高级技巧如时间同步和大文件处理,帮助用户快速掌握ROS数据管理核心技能。

weixin_29313239的博客 283

Qt的network模块实现域名找IP

基于Qt Creator应用软件编写的查找IPv4和IPv6的应用层软件Qt 是一个跨平台的 C++图形用户界面应用程序。分为商业版和免费版(我是这么理解的,没有任何依据)Qt各个版本的软件下载链接:使用Qt的好处有很多,在我这儿就是极大地极高开发效率,最明显的就是大大的加快了开发一款app所需要的时间。

qq_55610255的博客 1180

Power Bi数据分析案例:在线零售平台销售数据分析

该数据集为,涵盖2023年1月至2024年3月,包含用户群体特征、购买行为、产品偏好以及参与度指标。用户维度:Customer_ID,Age,Gender,City产品维度:Product_Category,Unit_Price事实表:Order_ID,Quantity,Total_Amount,Discount_Amount,Rating,Delivery_Time在Power Query当中处理销售日期列,并新增年龄段、浏览页面分段列。

2301_79586168的博客 1278

C++ Qt开发:QHostInfo主机地址查询组件

在Qt网络编程中,QHostInfo是一个强大而灵活的组件,用于获取有关主机的信息,包括主机名、IP地址和域名解析等。通过支持异步查询的机制,它能够在后台获取主机信息,避免阻塞主线程,同时通过信号-槽机制提供查询结果。其多主机查询、可靠的错误处理和与网络环境的适应性,使其成为处理网络应用中主机信息获取的理想选择。

微软技术分享 6579

centos7部署mysql8.0.35,主从复制,主主集群

centos7 linux部署mysql,主从复制,主主模式

zaixiaqin的博客 1990

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

Qt开发QHostInfo主机地址查询组件

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用。这些函数提供了对主机信息的查询、获取和处理的操作。需要注意,很多函数都是通过异步查询的方式获取主机信息的,因此在使用时需要通过信号-槽机制来获取查询结果。则可以实现查询特定主机的地址信息,该函数需要传入一个回调,如下所示我们在回调函数内查询主机所有的IP地址并输出,其实现原理与上述方法相同。

softshow1026的博客 491

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1259

qt获得本地IP的方法

本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明. 环境:Ubuntu10.04 + Qt4.7.0 Linux获得本地IP的方法,我尝试了两种 1.用QHostInfo类解析 QHostInfo类可以解析域名,理论上也可以解析本地IP,可是经过尝试,我发现解析出来的IP是127.0.0.1是本地回环地址,不符合我的需求。 代码: //获...

hulunberbus 461

推荐一个直接用于项目开发的PID库!很好用,很稳定

关注、星标公众号,不错过精彩内容大家好,我是小麦。最近有朋友问到有没有现成的C语言PID库。当然有了!现在我就准备给大家安利一下了。一般同学会去某度上搜,看到各种各样版本的PID示例,或者...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 9025

PoP(Package on Package)封装技术探讨

PoP(Package on Package)封装技术摘要 PoP是一种3D封装技术,通过垂直堆叠已完成封装的器件(如SoC+DRAM)实现高密度集成,典型应用于智能手机等空间受限场景。其核心优势包括:节省主板面积(垂直堆叠)、优化高速信号完整性(短互连路径)、提升供应链灵活性(独立测试与选型)。PoP结构分为底封装(通常为Flip-Chip BGA的SoC)和顶封装(如FBGA存储芯片),通过焊球阵列互连,一次回流焊完成组装。

sinat_15150363的博客 368

C++QT开发——TCP&UDP网络编程

C++QT开发——TCP&UDP网络编程

m0_60259116的博客 3560

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++使用SMTP协议实现简易的邮件发送功能(QT)

开启过程:登录163邮箱→点击设置→将上图的IMAP/SMTP服务和POP3/SMTP服务都开启,在开启IMAP/SMTP服务过程中有登录授权码,需要复制下来,后期SMTP登录需要使用到。

c51LOSER的博客 2325

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

探索Qt 网络编程:网络地址与服务类全解析

探索Qt 网络编程:网络地址与服务类全解析

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1261

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC.DNS解析(winsock)

1、尝试了gethostbyname(...) 和 Qt598中的qhostinfo::fromname(...),都可以解析出来IP,但是有一个问题:域名指向的IP改变了,这两种方式需要等较长时间 才会解析到更新后的ip地址。而CMD中 nslookup却一下子就解析到了更新后的IP...  1.1、查了一下资料,貌似原因如下(大概的说下原理,可能不严谨准确):   (1)域名服务器在 域名的TTL时间段内 它不会去实时的查找域名对应的IP,而是要等到TTL超时 域名服务器才回去再次查询 然后更新新.

翻肚鱼儿的博客 1039

QT查询主机信息

一、简介 一般我们在进行网络通信时,有些时候是通过界面上设置输入框 获取到指定的IP地址。但是更多的时候,我们会先查询主机的的MAC地址或者IP地址,而QT就提供了两个类用于实现查询主机地址的功能:QHostInfo 和 QNetworkInterface。 二、QHostInfo类 通过查询官方文档可知,QhostInfo的静态函数localHostName() 可获取本机的主机名,然后根据主机名调用静态函数 fromName(const QString &) 可以获得QhostInfo类的实例,

Hyc_cheng的博客 718

C++ Qt5学习笔记 2020-12-16(网络编程1:QHostInfo类,QNetworkInterface类,TCP服务端和客户端通信)

TCP 在.pro中添加代码: QT += network

qq_36780295的博客 1056

《QT6/C++开发指南》网络/主机信息查询/案例15-1

【代码】《QT6/C++开发指南》网络/主机信息查询/案例15-1。

summer__7777的博客 260

Qt的网络连接方式

Qt支持广泛的网络通信方式,包括HTTP/TP协议、TCP连接、UDP连接等等,都可以在Qt netWork模块中实现; 在.pro文件中加上QT += network就可以直接使用这个模块了 而且Qt是支持C++11的原生写法的,所以C++原生的很多库也能用,你甚至可以直接写socket连接;...

Albert_weiku的博客 3128

QT开发--网络编程

qt5

荒野 1143
上一篇: QT定时任务- timerEvent事件使用以及和QTimer 定时器的使用区别
下一篇: QT- label实现滚动字幕 (跑马灯)效果 -像素级
温柔大猩猩
博客等级 码龄7年 65粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值