Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.10.2011, 09:20
Midmal Midmal вне форума
Прохожий
 
Регистрация: 22.08.2009
Сообщения: 41
Репутация: 10
Сообщение Wake On LAN Широковещательный

Создаю широковещательно сетевое приложение, рассылающее магический пакет на сетевые карты всех компьютеров в локальной сети. Цель как уже понятно пробудить клиентские машины сразу же после включения серверной. Задумка проста и хороша, ещё один шаг к автоматизации управления и абсолютной ленивости. Но не всё так здорово и классно как хотелось бы, как обычно возникают подводные камни. Для начала приведу свой код, смотрим ниже...
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
procedure WakeUpComputer(MacAddress: string);
var
  FirstByte, SecondByte, ThirdByte: Byte;
  Package: array of Byte;
  UDPClientSocket: TIdUDPClient;
begin
  Windows.Beep(10000, 100);
  try
    SetLength(Package, 102);
    for FirstByte := 0 to 5 do
    begin
      Package[FirstByte] := $FF;
    end;
    for FirstByte := 1 to 16 do
    begin
      SecondByte := FirstByte * 6;
      for ThirdByte := 0 to 5 do
      begin
        Package[SecondByte + ThirdByte] := HexToInt(MacAddress[ThirdByte * 2
        + 1] + MacAddress[ThirdByte * 2 + 2]);
      end;
    end;
    UDPClientSocket := TIdUDPClient.Create(nil);
    try
      UDPClientSocket.BroadcastEnabled := True;
      UDPClientSocket.Host := '255.255.255.255';
      UDPClientSocket.Port := 2050;
      UDPClientSocket.SendBuffer(Pointer(Package)^, 103);
    except
      on Problem: Exception do
      begin
        if MessageBox(0, 'Произошла ошибка при открытии соединения',
        'Wake On LAN: Пробуждение сети', MB_ICONSTOP) = 1 then
        begin
          ExitProcess(0);
        end;
      end;
    end;
    UDPClientSocket.Free;
    SetLength(Package, 0);
    ExitProcess(0);
  except
    on Problem: Exception do
    begin
      if MessageBox(0, 'Произошла ошибка при генерации пакета',
      'Wake On LAN: Пробуждение сети', MB_ICONSTOP) = 1 then
      begin
        ExitProcess(0);
      end;
    end;
  end;
end;
Как видно из выше представленного куска кода - это знакомая многим до боли процедура посылающая магический пакет (WOL). Собственно в чём проблема, проблема в том что при вызове процедуры выскакивает последнее исключение: Произошла ошибка при генерации пакета.
Хм... Что же не так, то есть в чём мой косяк?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:20.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025