Wake up on Ethernet

Zsolt dzsolt at axelero.hu
Mon Sep 6 20:18:39 CEST 2004


Sziasztok!

-Eloszor is kell egy olyan halokartya ami kepes ilyenre. Ezt altalaban
tudjak a halokartyak.
-Kell egy harom eres madzag amivel a halokartyat osszekotod az
alaplappal.Enelkul ne megy.
-Biosban engedelyezni kell a Wake up on LAN-t. Valahol a Power fulon
talalod.
-Ezutan kell egy szoftver, ami a kivant MAC address-es kartyara elkuld egy
megfelelo adatsorozatot. Tehat kell tudnod a servered halokartyajanak MAC
address-et.
-A megfelelo kodsorozat a MAGIC Packet. Ha jol emlekszem ez 116 byte. Valami
ilyesmi:

DESTINATION SOURCE MISC. FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44
55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44
55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44
55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44
55 66 11 22 33 44 55 66 11 22 33 44 55 66 MISC. CRC.

-Ezt egy brodcast uzenettel tudod elkuldeni. Ip: 255.255.255.255
-Ez egy Delphi-s pelda:


procedure WakeUPComputer(aMacAddress: string);
var
  i, j              : Byte;
  lBuffer           : array[1..116] of Byte;
  lUDPClient        : TIdUDPClient;
begin
  try
    for i := 1 to 6 do
      lBuffer[i]:=HexToInt(aMacAddress[(i * 2) - 1] + aMacAddress[i * 2]);

    lBuffer[7] := $00;
    lBuffer[8] := $74;
    lBuffer[9] := $FF;
    lBuffer[10] := $FF;
    lBuffer[11] := $FF;
    lBuffer[12] := $FF;
    lBuffer[13] := $FF;
    lBuffer[14] := $FF;

    for j := 1 to 16 do
      for i := 1 to 6 do
        lBuffer[15 + (j - 1) * 6 + (i - 1)] := lBuffer[i];

    lBuffer[116] := $00;
    lBuffer[115] := $40;
    lBuffer[114] := $90;
    lBuffer[113] := $90;
    lBuffer[112] := $00;
    lBuffer[111] := $40;

    try
      lUDPClient := TIdUDPClient.Create(nil);
      lUDPClient.BroadcastEnabled := true;
      lUDPClient.Host := '255.255.255.255';
      lUDPClient.SendBuffer(lBuffer, 116);
      ShowMessage('Trying to wake-up remote host: ' + aMacAddress);
    finally
      lUDPClient.Free;
    end;
  except
    on E: Exception do writeln('There was an error');
  end;
end;

-Azt nem tudom, hogy hibernalasbol is elinditja-e a rendszert, de gondolom
igen, ugyanis ez sem csinal mast mint a power button.

Dévényi Zsolt




More information about the Elektro mailing list