delphi Winsock远程唤醒计算机的函数  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi Winsock远程唤醒计算机的函数


uses Winsock;

{远程唤醒函数   00-e0-4d-df-7e-8a}

procedure WakeUpPro(MacAddr: string);
var
  WSAData           : TWSAData;
  MSocket           : TSocket;
  SockAddrIn        : TSockAddrIn;
  i                 : integer;
  MagicAddr         : array[0..5] of Byte;
  MagicData         : array[0..101] of Byte;
begin
  for i := 0 to 5 do
    MagicAddr[i] := StrToInt('$' + copy(MacAddr, i * 3 + 1, 2));
  try
    WSAStartup($0101, WSAData);
    MSocket := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); //创建一个UPD数据报SOCKET.
    if MSocket = INVALID_SOCKET then
      exit;
    i := 1;
    setsockopt(MSocket, SOL_SOCKET, SO_BROADCAST, PChar(@i), SizeOf(i)); //设置广播
    FillChar(MagicData, SizeOf(MagicData), $FF);
    i := 6;
    while i < SizeOf(MagicData) do
    begin
      Move(MagicAddr, Pointer(Longint(@MagicData) + i)^, 6);
      Inc(i, 6);
    end;
    SockAddrIn.sin_family := AF_INET;
    SockAddrIn.sin_addr.S_addr := Longint(INADDR_BROADCAST);
    sendto(MSocket, MagicData, SizeOf(MagicData), 0, SockAddrIn, SizeOf(SockAddrIn));
    closesocket(MSocket);
    WSACleanup;
  except
    on E: Exception do
      //('WakeUpPro ' + MacAddr + ' except!' + E.Message);
  end;
end;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.071017026901245 seconds