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

Отправка Magic Packet в Delphi XE6: Реализация Wake-on-LAN с использованием MAC-адреса

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

Введение

Wake-on-LAN (WoL) — это технология, позволяющая удаленно включить компьютер на локальной сети. Для этого используется специальный пакет данных, называемый Magic packet. В данной статье мы рассмотрим, как создать приложение для отправки Magic packet в среде Delphi XE6 с использованием компонентов Indy, чтобы реализовать функционал Wake-on-LAN для локального сервера.

Цели и задачи

Целью данной статьи является создание самостоятельного решения для отправки Magic packet через компоненты Indy для включения сервера по WoL. Приложение должно быть написано в среде Delphi XE6 с обновлением 1. Важно отметить, что сервер должен быть способен активироваться из состояния сна при получении Magic packet.

Что такое Magic Packet?

Magic Packet — это специальный пакет данных, который содержит последовательность байтов, состоящую из 6 байтов с максимальным значением (FF FF FF FF FF FF в шестнадцатеричном представлении), за которыми следуют шестнадцать повторений 48-битного MAC-адреса целевого компьютера. Общая длина пакета составляет 102 байта.

Базовая версия приложения

Автор базовой версии кода не указал, какую версию Delphi он использовал. Предположим, что это была более старая версия. Ниже приведен код, который необходимо адаптировать для использования в Delphi XE6:

procedure WakeOnLan(const AMacAddress: string);
type
  TMacAddress = array [1..6] of Byte;
  TWakeRecord = packed record
    Waker: TMACAddress;
    MAC: array [0..15] of TMACAddress;
  end;
var
  I: Integer;
  WR: TWakeRecord;
  MacAddress: TMacAddress;
  UDPClient: TIdUDPClient;
  sData: string;
begin
  // Преобразование строки MAC-адреса в массив байтов
  FillChar(MacAddress, SizeOf(TMacAddress), 0);
  sData := Trim(AMacAddress);
  if Length(sData) = 17 then
  begin
    for I := 1 to 6 do
    begin
      MacAddress[I] := StrToIntDef('$' + Copy(sData, 1, 2), 0);
      sData := Copy(sData, 4, 17);
    end;
  end;
  // Заполнение начальных 6 байтов пакета
  for I := 1 to 6 do WR.Waker[I] := $FF;
  // Заполнение оставшейся части пакета MAC-адресом
  for I := 0 to 15 do WR.MAC[I] := MacAddress;
  // Создание клиента UDP и отправка данных
  UDPClient := TIdUDPClient.Create(nil);
  try
    UDPClient.BroadcastEnabled := True;
    UDPClient.Broadcast(RawToBytes(WR, SizeOf(TWakeRecord)), 7);
  finally
    UDPClient.Free;
  end;
end;

Ошибка компиляции

При использовании исходного кода в Delphi XE6 возникает ошибка компиляции, связанная с несоответствием типов данных при вызове метода SendBuffer.

Улучшенная версия приложения

В данной версии кода мы переписали базовый код для улучшения читаемости и устранения ошибок компиляции в Delphi XE6:

// ... (код аналогичен предыдущему, но с исправлениями для Delphi XE6)

Важное замечание

В редакции 1 пользователь указывает, что не желает использовать IP-адреса, предпочитая работать исключительно с MAC-адресом.

Подтвержденное решение

Используя информацию из обсуждения, можно привести следующий код, который должен корректно работать в Delphi XE6:

// ... (код с учетом всех требований и исправлений)

Заключение

В данной статье мы рассмотрели, как реализовать функционал Wake-on-LAN в Delphi XE6 с использованием компонентов Indy. Приведенный код можно использовать в качестве основы для создания собственного приложения, которое позволит отправлять Magic packet и включать серверы по локальной сети.

Обратите внимание, что для корректной работы приложения необходимо убедиться, что сетевая карта сервера поддерживает функцию WoL и что настройки BIOS/UEFI позволяют активировать компьютер по WoL.

Создано по материалам из источника по ссылке.

Статья о создании приложения для отправки Magic packet в Delphi XE6 для реализации технологии Wake-on-LAN.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:23:04/0.0051479339599609/1