Qt C++局域网内根据IP获取MAC地址

1 篇文章 0 订阅
#include <winsock2.h>
#include <iphlpapi.h>

#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")

QString getMacAddress(const QString& ipAddress)
{
    QString macAddress;
    IPAddr destIp = inet_addr(ipAddress.toStdString().c_str());
    ULONG macAddr[2] = {0};
    ULONG physAddrLen = 6;
    UCHAR* physAddr = new UCHAR[physAddrLen+2];

    DWORD dwRetVal = SendARP(destIp, 0, macAddr, &physAddrLen);
    if (dwRetVal == NO_ERROR) {

        memcpy(physAddr, &macAddr, sizeof(macAddr));
        if (physAddr != NULL) {
            char buffer[18];
            sprintf_s(buffer, "%02X:%02X:%02X:%02X:%02X:%02X",
                physAddr[0], physAddr[1], physAddr[2],
                physAddr[3], physAddr[4], physAddr[5]);
            macAddress = buffer;
        }


    }
    delete[] physAddr; // 使用delete[]来释放内存
    return macAddress;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取局域网中所有活动的IP地址,可以使用Qt的网络模块来实现。 首先,创建一个Qt网络套接字对象(QNetworkInterface)来获取当前设备上的所有网络接口。使用该对象的allInterfaces()方法可以获得设备上所有网络接口的列表。 然后,遍历这个列表,对于每个网络接口,使用addressEntries()方法来获取该接口下的所有IP配置。同样,这将返回一个地址条目列表。 接下来,我们可以遍历地址条目列表,获取每个IP地址。使用QHostAddress类的toString()方法,将每个IP地址转换为字符串表示。 最后,可以根据需要进行过滤。例如,可以检查IP地址是否有效或符合特定的IP地址模式。 下面是一个简单的示例代码,演示了如何在Qt获取局域网中所有活动的IP地址: ``` #include <QtNetwork> void printActiveIPs() { QList<QNetworkInterface> networkInterfaces = QNetworkInterface::allInterfaces(); foreach (const QNetworkInterface& networkInterface, networkInterfaces) { QList<QNetworkAddressEntry> addressEntries = networkInterface.addressEntries(); foreach (const QNetworkAddressEntry& addressEntry, addressEntries) { // 检查地址是否有效,如需过滤,可以在这里添加条件 if (addressEntry.ip().isNull() || addressEntry.ip().toString().isEmpty()) continue; qDebug() << "Active IP: " << addressEntry.ip().toString(); } } } ``` 此代码片段将打印出局域网中的所有活动IP地址。请注意,还可以根据需要修改代码来进行更精确的过滤或处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值