

Soru ? Basit şekilde wake on lan uygulamasını nasıl yapabilirim ?
Kod: Tümünü seç
{
What's a Magic Packet?
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.
Note: Destination, Source, Misc and CRC are normally added by our Socket-Component
}
procedure TForm1.Button1Click(Sender: TObject);
var
Data, temp: string;
k, n: integer;
begin
Data := '';
for k := 0 to 5 do
begin
Data := Data + Chr(StrToInt('$FF')); // 6x add a FF / 6x ein FF hinzufügen
end;
temp := StringReplace(Edit1.Text, '-', '', [rfReplaceAll]);
for k := 0 to 15 do
begin
temp := StringReplace(Edit1.Text, '-', '', [rfReplaceAll]);
for n := 0 to 5 do
begin
// 16x add Target-Mac-Adress / 16x die Ziel-Macadresse hinzufügen
Data := Data + Chr(StrToInt('$' + temp[1] + temp[2]));
Delete(temp, 1, 2);
end;
end;
//Example with TIdUDPClient of Indy
//IdUDPClient1.Send('255.255.255.255', '80', Data); // Send it / Verschick es
end;
Kod: Tümünü seç
uses
WinTypes, Messages, SysUtils, Classes, IdBaseComponent,
IdComponent, IdUDPBase, IdUDPClient;
Function HexToInt(S:String): LongInt;
const
DecDigits: Set Of '0'..'9' = ['0'..'9'];
HexVals: Array [0..$F] Of Integer = (0, 1, 2, 3, 4, 5, 6, 7,
8, 9, $A, $B, $C, $D, $E, $F);
UpCaseHexLetters: Set Of 'A'..'F' = ['A'..'F'];
LowCaseHexLetters: Set Of 'a'..'f' = ['a'..'f'];
var
v: LongInt;
i: integer;
LookUpIndex: integer;
begin
if length(S) <= 8 then begin
v := 0;
for i := 1 to length(S) do begin
{$R-}
v := v Shl 4;
{$R+}
if S[i] in DecDigits then begin
LookUpIndex := Ord(S[i]) - Ord('0');
end
else begin
if S[i] in UpCaseHexLetters then begin
LookUpIndex := Ord(S[i]) - Ord('A') + $A;
end
else begin
if S[i] in LowCaseHexLetters then begin
LookUpIndex := Ord(S[i]) - Ord('a') + $A;
end
else begin
LookUpIndex := 0;
end;
end;
end;
v := v Or HexVals[LookUpIndex];
end;
result := v;
end
else begin
result := 0;
end;
end;
procedure WakeUPComputer(aMacAddress: string);
var
i, j: Byte;
lBuffer: array[1..116] of Byte;
lUDPClient: TIUDPClient;
begin
try
for i := 1 to 6 do begin
lBuffer[i] := HexToInt(aMacAddress[(i * 2) - 1] +
aMacAddress[i * 2]);
end;
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 begin
for i := 1 to 6 do begin
lBuffer[15 + (j - 1) * 6 + (i - 1)] := lBuffer[i];
end;
end;
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.Port := 2050;
lUDPClient.SendBuffer(lBuffer, 116);
writeln('Trying to wake-up remote host: ' + aMacAddress);
finally
lUDPClient.Free;
end;
except
on E: Exception do writeln('There was an error');
end;
end;