Qt 获取本地IP 和 本地主机名称

这学期才刚接触网络和Qt编程,就整天泡在这两种资料中。。。

本来学习应该循序渐进的,没办法,项目要求在原来项目上添加Qt通信模块,要求有一个服务器,多个客户端进行信息的交互。。。

什么都还不会,就干这个这么高深的东西,纠结。。。。

好吧,发泄完了。来点实际的东西吧!!一点一点的累积,一点一点的学习。。


.pro工程文件添加    QT += network

.h文件添加头文件   #include



获取各种网络接口、设备名等等

QListlist = QNetworkInterface::allInterfaces();//获取所有网络接口的列表
foreach(QNetworkInterface interface,list)//遍历每个网络接口
{

    qDebug() << "Device:" << interface.name();//设备名
    qDebug() << "HardwareAddress:" << interface.hardwareAddress();//硬件地址

    //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
    QList entryList = interface.addressEntries();
    foreach(QNetworkAddressEntry entry,entryList)//遍历每一个IP地址条目
    {
        qDebug() << tr("-------------------------------------------------------");
        qDebug() << "IP Address:" << entry.ip().toString();//IP地址
        qDebug() << "Netmask:" << entry.netmask().toString();//子网掩码
        qDebug() << "Broadcast:" << entry.broadcast().toString();//广播地址
        qDebug() << tr("-------------------------------------------------------");
    }
    qDebug() << endl;
}



获取本地主机名称模块

//获取本机的计算机名称
QString localHostName = QHostInfo::localHostName();
qDebug() << "localHostName:" << localHostName;



最常用的获取IP模块

//最常用的获取IP的方法。。。在Widget类中声明过的。。。。
QString Widget::getIP()
{
    QList  list = QNetworkInterface::allAddresses();
    foreach(QHostAddress address,list)
    {
        if(address.protocol() == QAbstractSocket::IPv4Protocol)
        {
            //我们使用IPv4地址
            return address.toString();//弱水三千,只取一瓢。。。
        }
    }
    return "0.0.0.0";//不加这个会警告。。。。
}




你可能感兴趣的:(Qt)