网络唤醒魔术包构建和应用
“网络唤醒(Wake-on-LAN, WOL)是一种通过局域网发送特殊数据包(魔术包)远程唤醒处于休眠或关机状态计算机的技术“(摘自百度百科)
下面代码用于构建和发送魔术包唤醒远端设备
void onSendMagicPacket(QString strMac,QString targetAddr, quint16 targetPort)
{
char cstrMacAddr[6];
bool isOK;
for(int j = 0;j < 6; j++){
if(j < 5){
cstrMacAddr[j] = strMac.mid(strMac.indexOf(":",j*3) - 2,2).toInt(&isOK,16);
if(false == isOK)
return ;
}else if(j == 5){
cstrMacAddr[j] = strMac.mid(strMac.indexOf(":",j*3 - 1) + 1,2).toInt(&isOK,16);
if(false == isOK)
return ;
}
}
/*构建一个魔术唤醒包 6字节0xFF和16次的Mac地址*/
QByteArray magicPacket;
/*6个 0xFF*/
for(int i = 0;i < 6; i++){
magicPacket[i] = 0xFF;
}
/*16个 MAC*/
for(int k = 0; k < 16; k++)
{
for(int l = 0; l < 6; l++)
magicPacket[(k+1)*6 + l] = cstrMacAddr[l];
}
udpSocket->writeDatagram(magicPacket,QHostAddress(targetAddr),quint16(targetPort)); //发出数据报
udpSocket->writeDatagram(magicPacket,QHostAddress("255.255.255.255"),quint16(9)); //发出数据报
}目录 返回
首页