欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

QT获得本地IP以及MAC地址

最编程 2024-07-14 07:21:58
...

getIPSttring():连接的ip以及端口号来返回本地的ip地址

getMacString() : 通过本地的ip地址获得该IP地址关联的网络接口的MAC地址

QString getIpString(QString ip, QString port)
{
    QTcpSocket socket;
    int t_port = port.toInt();

    socket.connectToHost(ip, t_port);
    if (socket.waitForConnected(1000))
    {
        QHostAddress address = socket.localAddress();
        if (address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress(QHostAddress::LocalHost))
        {
            return address.toString();
        }
    }

    return "";
}

QString getMacString(QString localIP)
{
    if (localIP.isEmpty())
        return "";

    QList<QNetworkInterface> network = QNetworkInterface::allInterfaces();

    foreach(QNetworkInterface net, network)
    {
        if (net.flags().testFlag(QNetworkInterface::IsUp)
                && net.flags().testFlag(QNetworkInterface::IsRunning)
                && net.flags().testFlag(QNetworkInterface::CanBroadcast)
                && net.flags().testFlag(QNetworkInterface::CanMulticast)
                && net.hardwareAddress() != "00:00:00:00:00:00"
                && net.hardwareAddress() != "80:80:80:80:80:80")
        {
            QList<QNetworkAddressEntry> allIP = net.addressEntries();
            foreach(QNetworkAddressEntry ip, allIP)
            {
                if (ip.ip().protocol() == QAbstractSocket::IPv4Protocol)
                {
                    if (ip.ip().toString().compare(localIP) == 0)
                        return  net.hardwareAddress();
                }
            }
        }
    }
    return "";
}

推荐阅读