Главная страница
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.013 c
2-1205773230
Dima
2008-03-17 20:00
2008.04.13
Не могу разобраться с кодом.Помогите ПОЖАЛУЙСТА!!!


2-1205477844
FIL-23
2008-03-14 09:57
2008.04.13
как в database запихнуть jpg ?


2-1205652230
NewSer
2008-03-16 10:23
2008.04.13
В чём причина появления ошибки: «parameter Kod not found»?(ADO)


15-1203860095
Ega23
2008-02-24 16:34
2008.04.13
Любителям сайтов типа "Одноклассники"


3-1195499499
Nucer
2007-11-19 22:11
2008.04.13
Работа с ADO