首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Qt 5在局域网上唤醒?

如何通过Qt 5在局域网上唤醒?
EN

Stack Overflow用户
提问于 2015-03-19 10:44:26
回答 1查看 2.4K关注 0票数 4

我在局域网上找到了本教程,但是我不能完全理解它。它是用Qt3实现的。我想要唤醒局域网的功能,可以用Qt5编译。如何使用上述代码通过局域网使用Qt5唤醒计算机?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 19:34:09

下面是一个用Qt 5编译的局域网上的wake实现。该函数以目标计算机的MAC地址为参数,并广播相关的UDP数据包:

代码语言:javascript
复制
void MyClass::wakeOnLan(QString MAC)
{
    char MACAddr [6];
    char MagicPacket [102]; // Magic package for remote boot

    int j = sscanf (MAC.toLatin1().data(), "%2x-%2x-%2x-%2x-%2x-%2x",
                    & MACAddr [0], & MACAddr [1], & MACAddr [2], & MACAddr [3], & MACAddr [4], & MACAddr [5]);

    // Set to hexadecimal before the magicpacket array 6 characters ff
    memset (MagicPacket, 0xff, 6);

    int packetsize = 6; // the beginning of the initial value is 6, do not wrong. I is because the effect of the initial value of the written as 0, it is too effortless.
    // Build MagicPacket.
    for (int i = 0; i <16; i++)
    {
        memcpy (MagicPacket + packetsize, MACAddr, 6);
        packetsize += 6;
    }

    QHostAddress FakeAddress;
    FakeAddress.setAddress ("192.168.0.255");

    QUdpSocket udpSocket;
    udpSocket.writeDatagram(MagicPacket, 102, FakeAddress, 9);
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29142457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档