- WOL
-
WOL (англ. Wake-on-LAN — пробуждение по локальной сети) — технология, позволяющая удаленно «пробудить» компьютер посредством ЛВС, отправив по сети так называемый «Magic Packet» — пакет, сформированный специальным образом. Этот пакет может быть вставлен в пакеты любых стандартных протоколов верхних уровней, например, TCP или
- Сетевой адаптер с поддержкой Wake On LAN
- Если сетевой адаптер или материнская плата поддерживают шину PCI 2.2, то кабель не нужен
- Программу, способную посылать Magic Packet
Как это работает
Управляемый компьютер находится в дежурном режиме (stand by) и выдаёт питание на сетевой адаптер. Сетевой адаптер находится в режиме пониженного энергопотребления, просматривая все пакеты, приходящие на его MAC-адрес и ничего не отвечая на них. Если одним из пакетов окажется Magic Packet, сетевой адаптер выдаёт сигнал на включение питания компьютера.
Magic Packet
Magic Packet это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты TCP,
Состав Magic Packet
Вначале идет так называемая “цепочка синхронизации”, состоящая из 6 байт FF, а затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:
FFFFFFFFFFFF010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506
Программы, способные посылать Magic Packet
- Wake-On-LAN Online - включить компьютер удаленно через сеть Интернет - http://www.wakeonlan.ru
- AMD Magic Packet Utility - http://www.amd.com/us-en/assets/content_type/utilities/magic_pkt.exe
- Wake On Lan for Windows GUI/Command Line, Pocket PC и другие - http://www.depicus.com/wake-on-lan/
- "WakeOnLan"er :) - Бесплатная утилита для Windows от Команды Торес
- Для Maemo 4 (Nokia Internet Tablet N800/N810) - http://fernando.mercado.googlepages.com/maemowol
Код на Delphi (исправлено)
program WOL; {$APPTYPE CONSOLE} uses Windows, SysUtils, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, IdGlobal; {$R *.res} function HexToInt(const s: string): Integer; begin Result := 0; if Length(s) <= (SizeOf(LongWord) * 2) then Result := StrToInt('$' + s); end; procedure ErrMsg(Msg:String); begin MessageBox(0,PChar(Msg),'Wake On LAN',MB_OK or MB_ICONERROR); end; procedure WakeUPComputer(aMacAddress: string); var i,j,k:Byte; lBuffer: TBytes; // исправлено здесь (для BDS2006) lUDPClient:TIdUDPClient; begin try SetLength(lBuffer,102); for i := 0 to 5 do begin lBuffer[i] := $FF; end; for i:=1 to 16 do begin k:=i*6; for j := 0 to 5 do begin lBuffer[k+j] := HexToInt(aMacAddress[j*2+1] + aMacAddress[j*2+2]); end; end; lUDPClient:=TIdUDPClient.Create(nil); try lUDPClient.BroadcastEnabled:=true; lUDPClient.Host:='255.255.255.255'; lUDPClient.Port:=2050; lUDPClient.SendBuffer(lBuffer); //исправлено здесь (для BDS2006) except on E:Exception do ErrMsg(E.Message); end; lUDPClient.Free; SetLength(lBuffer,0); // не забываем чистить память except on E:Exception do ErrMsg(E.Message); end; end; procedure ShowHelp; begin MessageBox(0,'Usage: WOL.exe <MAC-address>'#13#10'Example: WOL 000D619AFB55', 'Wake On LAN',0); end; begin if ParamCount>0 then WakeUpComputer(ParamStr(1)) else ShowHelp; end.
При работе с программами следует учесть тот факт, что не все компьютеры включаются сразу после подключения штепсельной вилки в электросеть. Это связано с отсутствием процесса инициализации подачи питания на сетевую карту (компьютер еще не включался и не знает какие устройства следует питать чтобы получать специальные сигналы, среди которых магический пакет). Поэтому следует производить одно предварительное включение вручную. Если существует необходимость избавиться от данной проблемы (например, сервер закрывается на ключ или находится очень далеко), следует установить в BIOS параметр питания "Wake After Power Fail" в значение "ON".
Wikimedia Foundation. 2010.