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
    }
相关推荐
nnsix10 小时前
Unity QFramework ResKit、UIKit 笔记
笔记
摇滚侠11 小时前
Java 零基础全套教程,反射机制,笔记 187-188
java·开发语言·笔记
【云轩】11 小时前
如何设计一台能模拟电机的电子负载:一个硬件工程师的实战笔记
笔记·嵌入式硬件
可信计算13 小时前
X司民用无人机运行安全与合规培训手册
笔记
李子琪。13 小时前
Web漏洞-CSRF-CSRF防御 实验步骤
经验分享·笔记
小碗羊肉14 小时前
【Agent笔记 | 第四篇】Agentic RAG
笔记
小雨xs15 小时前
Vulnhub靶场DC-9 渗透测试笔记
笔记
whyTeaFo15 小时前
MIT 6.1810: xv6 book Chapter3: Page tables 笔记
笔记
東雪木16 小时前
JVM 与 Java 内存模型 专属复习笔记
java·jvm·笔记·java面试
kinl201816 小时前
Softmax Linear Units (SoLU)
笔记