QT4-WakeOnLan

Aus SigVDR's Wiki
Wechseln zu: Navigation, Suche

WakeOnLan

Um ein Gerät im Netzwerk zu starten wird ein sogenanntes MagicPacket an die Netzwerkkarte des betreffenden Gerätes gesendet. (siehe Wikipedia Wake On Lan). Das MagicPacket enthält sechsmal in Folge den hexadezimalen Wert FF; unmittelbar danach erscheint die ununterbrochene 16-malige Wiederholung der MAC-Adresse der Netzwerkkarte.

In QT4 lässt sich das mit der Klasse QUdpSocket so erldigen.

void wakeOnLan(QString macAddress,QChar separator){
    // macAdress in der Form: 01-20-ae-f8-04-b0
    QUdpSocket *udpSocket = new QUdpSocket();
    QStringList macParts = macAddress.split(separator);
    if ( macParts.count() != 6) {
        // error
        return;
    }
    QByteArray macValues;
    for (int i = 0; i < 6; i++) {
        macValues.append(macParts[i]);
    }
    QByteArray magicPacket = QByteArray::fromHex("ffffffffffff");

    for (int i = 0; i < 16; i++) {
        magicPacket.append(QByteArray::fromHex(macValues));
    }
    udpSocket->writeDatagram(magicPacket.data(), magicPacket.size(), QHostAddress::Broadcast, 40000);
    delete udpSocket;
}
Meine Werkzeuge