سلامنقل قول:
بله ميشود اينكار را كرد، ولي :
1- دستگاه مقصد بايد داراي كارت شبكه باشد
2- Wake on Lan فعال شده باشد.
وقتي دستگاه خاموش است داراي IP نيست ولي هركارت شبكه داراي يك آدرس يكتاي MAC است.
بوسيله دلفي :
کد:uses idUDPClient;
// ==========================================
// Wakes a machine on lan
// AMacAddress is 17 char MAC address.
// eg. '00-C0-4F-0A-3A-D7'
// ==========================================
procedure WakeOnLan(const AMacAddress : string);
type
TMacAddress = array [1..6] of byte;
TWakeRecord = packed record
Waker : TMACAddress;
MAC : array[0..15] of TMACAddress;
end;
var i : integer;
WR : TWakeRecord;
MacAddress : TMacAddress;
UDP : TIdUDPClient;
sData : string;
begin
// Convert MAC string into MAC array
fillchar(MacAddress,SizeOf(TMacAddress),0);
sData := trim(AMacAddress);
if length(sData) = 17 then begin
for i := 1 to 6 do begin
MacAddress[i] := StrToIntDef('$' + copy(sData,1,2),0);
sData := copy(sData,4,17);
end;
end;
for i := 1 To 6 do WR.Waker[i] := $FF;
for i := 0 to 15 do WR.MAC[i] := MacAddress;
// Create UDP and Broadcast data structure
UDP := TIdUDPClient.Create(nil);
UDP.Host := '255.255.255.255';
UDP.Port := 32767;
UDP.BroadCastEnabled := true;
UDP.SendBuffer(WR,SizeOf(TWakeRecord));
UDP.BroadcastEnabled := false;
UDP.Free;
end;
كد VB :
براي استفاده از كد زير بايد از ASocket.dll استفاده كنيد ، كه از لينك زير ميتوانيد دريافت كنيد :
کد:http://www.vahland.com/asocket/asocket.dll
کد:Sub Main()
Dim objWol As ASOCKETLib.WOLClass = New ASOCKETLib.WOL()
Dim objConstants As Constants = New Constants()
Dim strMAC As String = "00-10-4B-BA-7A-51"
Console.WriteLine("WakeUp " & strMAC & " ...")
objWol.WakeUp(strMAC)
Console.WriteLine("Result: " & objWol.GetErrorDescription(objWol.LastError))
Console.WriteLine("Ready.")
System.Threading.Thread.Sleep(5000)
End Sub