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

Листинг 11.27.

Отправка сообщения заданному собеседнику

procedure TfrmClient.lstUsersDblClick(Sender: TObject);

begin

if ((lstUsers.ItemIndex >= 0) and (txtMessage.Text <> \'\'))

then

begin

//Отправим сообщение только для выбранного собеседника

//(сообщение вида «имя_собеседника:текст_сообщения»)

TCPClient.WriteLn(lstUsers.Items.Strings[lstUsers.ItemIndex] +

\':\' + txtMessage.Text);

txtMessage.SetFocus;

end;

end;

Сразу после соединения с сервером, тоесть в обработчикеTfrmClient. TCPClient-Connected, приведенном в листинге 11.28, клиентская программа отправляет имя пользователя серверу. При отсоединении от сервера (тот же листинг 11.28) происходит соответствующее оформление внешнего вида формы frmClient.

...

Листинг 11.28.

Обработка присоединения/отсоединения от сервера

procedure TfrmClient.TCPClientConnected(Sender: TObject);

begin

//Отправляем на сервер имя пользователя

TCPClient.WriteLn(\'name:\' + txtUser.Text);

end;

procedure TfrmClient.TCPClientDisconnected(Sender: TObject);

begin

//Оформим форму для отсоединенного от сервера состояния

Disconnect;

end;

Ключевой обработчик (именно по таймеру проверяется факт прихода сообщения от сервера) приведен в листинге 11.29. Для элемента управления TCPClient значение тайм-аута установлено для того, чтобы при отсутствии принятых данных клиентская программа не переходила надолго в состояние ожидания, а генерировалось исключение, по которому и можно судить, что данных еще нет (см. блок try в этом обработчике).

...

Листинг 11.29.

Проверка, есть ли данные от сервера

procedure TfrmClient.Timer1Timer(Sender: TObject);

var strMessage: string;

begin

//Проверим, нет ли для нас сообщения

if (TCPClient.Connected)then

begin

try

strMessage := TCPClient.ReadLn;

if (strMessage <> \'\')then

ProcessMessage(strMessage);

except

on EIdReadTimeout do ; //Ошибки тайм-аута игнорируем

else

//При остальных ошибках отсоединяемся от сервера

TCPClient.Disconnect;

end;

end;

end;

end.

...

Примечание

Чтобы при запуске клиентского приложения из среды Delphi постоянно не появлялись сообщения об исключениях (возникают при истечении тайм-аута в TfrmClient.TimeiiTimer), снимите флажок Stop on Delphi Exceptions на вкладке Language Exceptions диалогового окна Debugger Options (меню Tools → Debugger Options).

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

Глава 12 Шифрование

• Основы криптографии

• Шифр простой подстановки

• Транспозиция

• Шифр Виженера и его варианты

• Шифр с автоключом

• Взлом

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

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

Забытое
Забытое

Захватывающая история Сиенны Престон продолжается во второй части головокружительной серии «Игра обмана».Семнадцатилетняя Сиенна не понаслышке знает о душевной боли и потерях. Но на этот раз всё по-другому: кто-то вмешался в воспоминания её возлюбленного, и теперь ей предстоит найти ответы.След ведёт её к сверкающим небоскрёбам и роскоши Рубекса, столицы Пасифики, где она проникает в правительственное Ведомство интеллекта и генетики. Но ответы получить не так-то просто, особенно когда её собственные воспоминания могут быть искажены. К счастью, рядом есть Зейн Райдер, готовый помочь ей сложить вместе кусочки головоломки. Его преданность и забота размывают границу между дружбой и чем-то большим.Когда Сиенна подбирается слишком близко к тёмным секретам Ведомства, её обвиняют в убийстве видного государственного деятеля, и ей приходится пуститься в бега. Как бы ни разрывалось сердце Сиенны в попытке понять, кого она любит, это всё вскоре перестаёт иметь значение — потому что единственное, что её сейчас ждёт, это смертный приговор.

Марина Козикова , Александр Степанович Грин , Марина Суржевская , Кристин Смит

Любовное фэнтези, любовно-фантастические романы / Проза / Классическая проза / Самиздат, сетевая литература / Технические науки / Любовно-фантастические романы