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
    }
相关推荐
_落纸1 天前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE1 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha1 天前
SpringBoot
笔记·学习
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中2 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto2 天前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h2 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
周周记笔记2 天前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅2 天前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~2 天前
《大数据之路1》笔记2:数据模型
大数据·笔记