Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Разбудить компьютер по сети, Использование Bios Wake-on-Lan

Delphi , Интернет и Сети , Сеть

Разбудить компьютер по сети, Использование Bios Wake-on-Lan

Code:

{$APPTYPE CONSOLE}
 
uses
SysUtils,
Classes,
IdBaseComponent,
IdComponent,
IdUDPBase,
IdUDPClient;
 
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;
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;
with TIdUDPClient.Create(nil) do
try
   Active := true;
   BroadcastEnabled := true;
   Broadcast(packet, 9);
finally
   Free;
end;
end;
 
begin
if ParamCount <> 1 then
   WriteLn('usage: WakeOnLan MACAddress' + #10 + #13 + 'exmple: WakeOnLan 000102030405')
else
   SendMagicPacket(ParamStr(1));
end.

Автор: Song

Взято из http://forum.sources.ru

Программа на Delphi, использующая компонент клиента UDP Indy для отправки "магического пакета" для пробуждения компьютера на сети с помощью функциональности Wake-on-LAN BIOS.

Вот разбивка кода:

  1. Первый раздел импортирует необходимые единицы и объявляет некоторые константы.
  2. Функция HexStringToBinString принимает строку в формате hexadecimal как входной параметр и преобразовывает ее в строку в формате binary. Она делает это, перебирая входную строку по частям 2 символов (байты hex), конвертируя каждую часть в байт с помощью функции HexToBin и добавляя полученный байт в буфер.
  3. Процедура SendMagicPacket принимает MAC-адрес как входной параметр и отправляет магический пакет для пробуждения соответствующего компьютера на сети. Она делает это, создавая экземпляр компонента TIdUDPClient, настройкой свойств Active, BroadcastEnabled и Broadcast для включения вещания, преобразованием MAC-адреса в строку binary с помощью функции HexStringToBinString, созданием пакета путем повторения MAC-адреса 16 раз, с каждым повторением состоящим из 6 байт (MAC-адрес), и отправкой пакета как вещательного сообщения на порт 9.
  4. Основная часть программы проверяет, предоставлен ли пользователю одиночный аргумент командной строки (MAC-адрес). Если не предоставлен, она выводит ошибку и заканчивает работу. В противном случае она вызывает процедуру SendMagicPacket с предоставленным MAC-адресом.

Вот некоторые предложения по улучшению:

  • Обработка ошибок: код выбрасывает исключения при обнаружении недопустимого ввода, но не обрабатывает ошибки, которые могут возникнуть во время сетевого общения (например, таймауты соединения, потеря пакетов). Рассмотрите использование механизмов обработки ошибок, встроенных в Indy, для улучшения надежности.
  • Организация кода: процедура SendMagicPacket выполняет несколько DISTINCT задач: создание клиента UDP, отправку вещательного сообщения и очистку. Рассмотрите разбиение этой процедуры на более мелкие процедуры или функции для лучшей maintainability и readability.
  • Комментарии и документация: хотя код в целом хорошо документирован, некоторые разделы (например, функция HexStringToBinString) могут получить дополнительные комментарии, объясняющие их цель и поведение.

В целом, этоsolid реализация функциональности Wake-on-LAN с использованием Indy. С некоторыми минорными улучшениями она должна быть надежной и легко использовать.

Разбудить компьютер по сети с помощью Wake-on-LAN, используя BIOS и программу на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сеть ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:24:03/0.012140989303589/0