网络唤醒魔术包构建和应用

06 11月
作者:cinjep|分类:应用笔记

“网络唤醒(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)); //发出数据报
}


浏览148
返回
目录
返回
首页
QListWidget 应用笔记 Qt C++中生成验证码