Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

Wake On Lan не всегда срабатывает   Найти похожие ветки 

 
DelphiN! ©   (2007-07-20 07:46) [0]

Пытаюсь сделать удаленное включение 100 компьютеров следующим образом :


procedure WakeOnLan(IP: String);

 function HexStringToBinString(const HexStr: string): string;
 var
   i, l: integer;
 begin
   Result := "";
   l := length(HexStr);
   l := l div 2;
   SetLength(Result, l);
   for i := 1 to l do
    if HexToBin(PChar(Copy(HexStr, (i - 1) * 2 + 1, 2)),
      PChar(@Result[i]), 1) = 0 then
        raise Exception.Create("Invalid hex value");
 end;

 procedure SendMagicPacket(MACAddress: string);
 var
  s, packet: string;
  i: integer;
  SS: TIdUDPClient;
 begin
  if Length(MACAddress) <> 12 then
   raise Exception.CreateFmt("Invalid MAC Address: %s", [MACAddress]);
  packet := HexStringToBinString("FFFFFFFFFFFF");
  s := HexStringToBinString(MACAddress);
  for i := 1 to 16 do
   packet := packet + s;

  try
    ss := TIdUDPClient.Create(nil);
    ss.Active := true;

    ss.BroadcastEnabled := true;
    ss.Broadcast(packet, 9);
   finally
    ss.Free;
   end;
 end;

begin
 SendMagicPacket(GetMAC(IP));
end;

function GetMAC(IP: String): String;
var
 INI: TINIFile;
begin
 try
   INI := TINIFile.Create(ExtractFilePath(ParamStr(0))+"DATA\MACS.DAT");
   Result := ini.ReadString("MAIN",IP,"");
 finally
   INI.Free;
 end;
end;

for i := 0 to IpList.Count-1 do
 WakeOnLan(IpList.Strings[i]);



Однако включение всех компьютеров производится далеко не всегда. При первой попытке могут включиться все компьютеры, а может не включиться 1 или 10, или 50, или 99. При второй попытке может включиться оставшаяся часть, а может включиться не полностью ...
 С чем связана данная нестабильность и как побороть это?


 
dzr_gregory   (2007-07-20 10:27) [1]

Может быть это связано с UDP? Это ведь протокол без гарантированной доставки пакетов, отсюда и предположение, что часть пакетов может пропадать. Реализуй повторную отправку либо PING удаленным машинам через какое-то время и повторная отправка пакета тем, от кого не был получен ответ на PING.



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
2-1205831391
Megatron
2008-03-18 12:09
2008.04.13
Передача параметров


2-1205531607
DJ_UZer
2008-03-15 00:53
2008.04.13
скроллбар и курсор в мемо


15-1204535379
Vemer
2008-03-03 12:09
2008.04.13
Ошибка с rtl60.bpl на новойм компьютере.


15-1204147672
Tirael
2008-02-28 00:27
2008.04.13
тем, кому не все равно


2-1206024539
Aleksandr
2008-03-20 17:48
2008.04.13
ClientSocket и ServerSocket