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
    }
相关推荐
暗流者8 小时前
AAA 服务器与 RADIUS 协议笔记
运维·服务器·笔记
Ro Jace9 小时前
科研笔记:博士生手册
笔记
#include>9 小时前
【Golang】有关垃圾收集器的笔记
笔记·golang
Qlittleboy10 小时前
手机、电脑屏幕的显示坏点检测和成像原理
经验分享·笔记
Magnetic_h14 小时前
【iOS】SDWebImage第三方库源码学习笔记
笔记·学习·ios·objective-c·cocoa
悠哉清闲15 小时前
C ++代码学习笔记(一)
c++·笔记·学习
Demonsong_17 小时前
2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
经验分享·笔记
MowenPan199517 小时前
高等数学 9.1多元函数的基本概念
笔记·学习·高等数学
qq_3411604420 小时前
文件系统挂载详细分析(《图解Linux内核》虚拟文件系统篇笔记二)
linux·服务器·笔记
月熊21 小时前
Kubernetes笔记整合-1
笔记·容器·kubernetes