Читаем Delphi. Трюки и эффекты полностью

Листинг 11.1. Реализация простого сервера

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);

var

strText: string;

begin

//Принимаем от клиента строку

strText := AThread.Connection.ReadLn;

//Отвечаем

AThread.Connection.WriteLn(\'Принял строку:\' + strText);

//Обновим сведения на форме сервера (сервер многопоточный,

//поэтому используем синхронизацию)

section.Enter;

Inc(processed,1);

txtCount.Text := IntToStr(processed);

txtFrom.Text := AThread.Connection.Socket.Binding.PeerIP;

section.Leave;

//Закрываем соединение с пользователем

AThread.Connection.Disconnect;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

section := TCriticalSection.Create;

end;

При ответе клиенту сервер только повторяет принятую от него строку с добавлением текста Принял: в начало строки.

Анализируя листинг 11.1, можно заметить, что даже в рассматриваемом простейшем сервере пришлось применить синхронизацию при обновлении внешнего вида формы при помощи критической секции (необходимо дополнительно добавить имя модуля SyncObjs в секцию uses).

Теперь рассмотрим реализацию клиентской части (проект SimpleClient). Внешний вид клиентского приложения приведен на рис. 11.4.

Рис. 11.4. Внешний вид клиента

Естественно, что для работы клиентского приложения на форму помещен экземпляр компонента IdTCPQient (его имя – IdTCPClientl). Свойству Port этого компонента нужно присвоить значение 12 34 0. Текстовое поле (Edit) для ввода строки, подлежащей отправке не сервер, имеет HMfltxtMessage. Текстовое поле (Edit), в которое вводится имя или адрес сервера, названо txtServer. Поле со строками ответов (Memo) имеет имя txtResults. Вся работа клиентского приложения выполняется при нажатии кнопки Обработать. Текст соответствующего обработчика приведен в листинге 11.2.

...

Листинг 11.2. Реализация простого клиента

procedure TForm1.Button1Click(Sender: TObject);

begin

//Соединяемся с сервером и посылаем ему введенную строку

IdTCPClient1.Host := txtServer.Text;

IdTCPClient1.Connect;

IdTCPClient1.WriteLn(txtMessage.Text);

txtMessage.Text := \'\

//Ожидаем ответ и закрываем соединение

txtResults.Lines.Append(IdTCPClient1.ReadLn);

IdTCPClient1.Disconnect;

end;

...

Примечание

Для простоты в реализации клиентского приложения не производится обработка исключений, генерация которых возможна, например, при неправильном указании компьютера, на котором запущено серверное приложение. В более сложных примерах, с которыми вы познакомитесь далее в этой главе, обработка указанных исключений реализована.

Все, теперь можно запускать сервер и клиенты (на произвольном количестве компьютеров) и понаблюдать за результатами их работы. Только не забудьте запустить сервер до того, как будете обращаться к нему с помощью программы-клиента.

<p>11.3. Слежение за компьютером по сети</p>

Теперь рассмотрим более интересный пример использования сетевых компонентов IdTCPServer и IdTCPQient, который может быть полезен для людей, имеющих отношение к администрированию компьютеров сети.

Серверная программа предварительно запускается на наблюдаемом компьютере. В этом примере программа-сервер позволяет клиентской программе получать следующие сведения о компьютере, на котором она (программа-сервер) запущена:

• разрешение монитора;

• глубину цвета для монитора;

• полноразмерную копию экрана;

• копию экрана, уменьшенную (или увеличенную) до заданных размеров.

Для получения указанных сведений программа-клиент должна послать серверу следующие строковые значения:

• get_screen_width – для получения ширины и get_screen_height – для получения высоты экрана в пикселах;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных