Главная страница
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.015 c
15-1204034089
sds
2008-02-26 16:54
2008.04.13
Есть программа которая работает с БД.


2-1205343170
MegaPiha
2008-03-12 20:32
2008.04.13
Как создать "живой" SQL запрос?


2-1205943484
oletta
2008-03-19 19:18
2008.04.13
корень третьей степени


2-1205934346
Kolan
2008-03-19 16:45
2008.04.13
Преобразовать структуру в массив байт и наоборот.


2-1205830626
031178
2008-03-18 11:57
2008.04.13
Запрос !!!