03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

coding<br />

АнДРей «littleBUddA» ШкРыль<br />

/ Shkrylandrei@rambler.ru /<br />

Ваяем radmin<br />

НАПиСАть ПрОГрАММУ ДЛЯ УДАЛеННОГО<br />

АДМиНиСтрирОВАНиЯ? ЛеГКО!<br />

Как же интересно наблюдать на своем мониторе за тем, что делает твой сосед по отделу,<br />

и понимать, что под его грозным видом скрывается человек с трогательной привязанностью<br />

к сайтам знакомств и любовью к фотографиям пятничной тематики! Однако<br />

речь в этой статье пойдет совсем не о вуайеризме…<br />

Приступим<br />

В этом материале мы рассмотрим создание несколько<br />

усеченного и безвозмездного аналога<br />

radmin’а. Кстати, мы испытали его в рабочих<br />

условиях и узнали много нового о трудовых<br />

буднях Никитоса. Оказывается, он, как и робот<br />

Бендер, интересуется кулинарными онлайнпередачами!<br />

Надеюсь, со временем он угостит<br />

нас своей ядовитой стряпней ;).<br />

Итак, приступим! Первым делом разработаем<br />

серверную часть. Размести на форме следующие<br />

компоненты (смотри рисунок):<br />

• TIdTCPServer (закладка Indy Servers) — как<br />

видишь, для работы с сетью мы будем использовать<br />

компоненты INDY;<br />

• два TEdit — в них вводятся IP-адрес сервера<br />

и номер порта, по которому будет происходить<br />

соединение;<br />

• TButton с текстом «Включить сервер» — с<br />

помощью нее ты будешь запускать сервер,<br />

давая тем самым возможность подключаться<br />

к своей машине. В конце концов, мы же всетаки<br />

должны оставить пользователю право<br />

решать, хочет он, чтобы за ним подсматривали,<br />

или нет ;);<br />

/ 120<br />

• TMemo — в нем будет вестись лог всех осуществляемых<br />

на сервере операций;<br />

• TImage — к нему нам потребуется две<br />

картинки, которые можно найти в исходниках<br />

программы, находящейся на диске. Зовут эти<br />

графические изображения eye1.bmp и eye2.<br />

bmp, а олицетворять они будут соответственно<br />

включенное и выключенное состояние сервера.<br />

Размести компоненты на форме, как это показано<br />

на рисунке.<br />

Кодим сервер<br />

Для начала создай обработчик для кнопки<br />

«Включить…», который будет задавать IP-адрес<br />

и номер порта для приема команд сервером.<br />

Делается это через свойство Bindings, оно<br />

является контейнером для всех сокетов, связанных<br />

с сервером (смотри врезку «Активизация<br />

сервера»). Далее необходимо активизировать<br />

сервер посредством установки свойства Active<br />

компонента TIdTCPServer в True, при этом<br />

кнопка «Включить сервер» превращается в<br />

«Выключить сервер» и меняется картинка в<br />

TImage. Благодаря этому пользователь сможет<br />

визуально наблюдать состояние сервера.<br />

Листинг обработчика ты найдешь в исходниках<br />

программы на DVD, прилагающемуся к журналу.<br />

Также нам потребуется специальная процедура<br />

Log — она отвечает за журналирование<br />

действий, осуществляемых сервером.<br />

Объяви ее в секции public формы следующим<br />

образом:<br />

procedure TForm1.Log(S:string);<br />

Реализация ее очень проста:<br />

Memo1.Lines.Add<br />

(TimeToStr(Time)+' '+S);<br />

Иначе говоря, в ней происходит обычное добавление<br />

строки текста в TMemo. При желании<br />

процедуру можно модифицировать, записывая<br />

данные в файл или еще что-то в этом роде.<br />

Кроме того, нам понадобится процедура для получения<br />

скриншота экрана. Прежде чем писать<br />

ее, установи компонент TPNGImage, который<br />

позволяет работать с изображениями формата<br />

PNG (компонент прилагается к исходникам<br />

программы).<br />

xàêåð 05 /101/ 07

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!