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
    }
相关推荐
せいしゅん青春之我3 小时前
【JavaEE初阶】网络原理——TCP报文结构、确认应答机制
网络·笔记·网络协议·tcp/ip·java-ee
charlie1145141914 小时前
2D 计算机图形学基础速建——2
笔记·学习·线性代数·教程·计算机图形学
9ilk6 小时前
【仿RabbitMQ的发布订阅式消息队列】--- 模块设计与划分
c++·笔记·分布式·后端·中间件·rabbitmq
摇滚侠6 小时前
Spring Boot3零基础教程,JVM 编译原理,笔记87
jvm·spring boot·笔记
摇滚侠7 小时前
Spring Boot3零基础教程,配置 GraalVM 环境,笔记88
java·spring boot·笔记
北诺南兮7 小时前
大模型算法面试笔记——多头潜在注意力(MLA)
笔记·深度学习·算法
摇滚侠9 小时前
Spring Boot3零基础教程,Kafka 的简介和使用,笔记76
spring boot·笔记·kafka
阿民不加班9 小时前
【React】打卡笔记,入门学习02:react-router
笔记·学习·react.js
Starry_hello world11 小时前
进程的替换
linux·笔记·有问必答
✎ ﹏梦醒͜ღ҉繁华落℘12 小时前
freeRTOS学习笔记(十二)--信号量
笔记·学习