Главная страница
    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.45 MB
Время: 0.007 c
15-1203955152
Ega23
2008-02-25 18:59
2008.04.13
Есть ли в PHP5 аналог forward?


2-1205525727
TaHdeR
2008-03-14 23:15
2008.04.13
Как свьязать DataSource и Query?


2-1205844920
kudatsky
2008-03-18 15:55
2008.04.13
Как сделать приложение видимым


2-1205828693
Aleksandrrr
2008-03-18 11:24
2008.04.13
вложенный запрос


6-1185177400
Dmitry_177
2007-07-23 11:56
2008.04.13
Сокеты: разрыв соединения для последующего соединения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский