Qt 获取本机 ip地址方法 获取客户端ip和端口的方法

cpp 复制代码
QString getIPAddr()
{
    QStringList ips;
    QList<QNetworkInterface> networkinterfaces = QNetworkInterface::allInterfaces();
    foreach (QNetworkInterface interface, networkinterfaces)
    {
        QNetworkInterface::InterfaceFlags t_interFlags = interface.flags();
        if(t_interFlags & QNetworkInterface::IsUp && t_interFlags & QNetworkInterface::IsRunning)
        {
            foreach (QNetworkAddressEntry entry, interface.addressEntries())
            {
                if (entry.ip() != QHostAddress::LocalHost&& entry.ip().protocol() == QAbstractSocket::IPv4Protocol)
                {
                    ips.append(entry.ip().toString());
                }
            }
        }
    }
    return ips.join("|");
}

上述函数返回本机所有IPv4的ip地址列表,比如192.168.1.10|192.166.1.95

其它方法=》

cpp 复制代码
 #if 0
        QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
        // 获取第一个本主机的IPv4地址
        int nListSize = ipAddressesList.size();
        for (int i = 0; i < nListSize; ++i)
        {
               if (ipAddressesList.at(i) != QHostAddress::LocalHost &&
                   ipAddressesList.at(i).toIPv4Address()) {
                   strIpAddress = ipAddressesList.at(i).toString();
                   break;
               }
         }
         // 如果没有找到,则以本地IP地址为IP
         if(strIpAddress.isEmpty())
            strIpAddress = QHostAddress(QHostAddress::LocalHost).toString();
        #endif
   #if 0      
        QString hostNme = QHostInfo::localHostName();
        QHostInfo hostInfo = QHostInfo::fromName(hostNme);
        auto addList = hostInfo.addresses();
        QString ipAddr = "IpList:";
        if (!addList.isEmpty())
        {
            for (int i = 0;i < addList.count();++i)
            {
                QHostAddress hostAddress = addList.at(i);
                 ipAddr += hostAddress.toString();
                 if(i < addList.count() - 1)
                     ipAddr += ",";
            }
        }
#endif

获取客户端IP地址:

cpp 复制代码
//获取对方的IP和端口
    QString strSrcIp = pTcpSocket->peerAddress().toString();
    if (pTcpSocket->peerAddress().protocol() == QAbstractSocket::IPv6Protocol && strSrcIp.startsWith("::ffff:"))
    {
            quint32 ipv4 = QHostAddress(strSrcIp.mid(7)).toIPv4Address();
            strSrcIp = QHostAddress(ipv4).toString(); // IPv4地址: 192.168.0.1
    }
相关推荐
Bearnaise33 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
weixin_518285054 小时前
深度学习笔记11-神经网络
笔记·深度学习·神经网络
龙鸣丿7 小时前
Linux基础学习笔记
linux·笔记·学习
Nu11PointerException9 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
亦枫Leonlew10 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝10 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树12 小时前
简单的签到程序 python笔记
笔记·python
幸运超级加倍~13 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
芊寻(嵌入式)14 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
准橙考典14 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法