На этом шаге мы рассмотрим компонент TNMEcho.
Компонент применяется для отсылки текстовых сообщений на эхо-сервер и получения этого сообщения обратно в
соответствии со стандартом RFC 862. Этот компонент обычно применяется для тестирования и
настройки сети, поскольку мы можем оценить время ответа сервера, которое помещается в свойство ElapsedTime.
Это свойство - единственное собственное свойство компонента, остальные наследуются.
Перед отправкой сообщения должно быть установлено соединение с сервером. Для этого нужно задать имя сервера
или его адрес в свойстве Host, а в свойстве Port определить соответствующий порт
(обычно серверы эхо "слушают" 7-й порт). После этого нужно вызвать метод Connect. Для отправки
сообщения нужно использовать метод Echo. В случае успеха вы должны получить от сервера эхо ту строку,
которую вы передавали в качестве параметра методу Echo. После этого, для завершения связи вы
должны вызвать метод Disconnect. Все методы, кроме метода Echo, компонент наследует.
Пример. Создаем новое приложение Delphi и помещаем на форму два поля редактирования,
компонент ТМеmо, четыре командные кнопки, три метки и компонент TNMEcho.
Рис.1. Приложение на этапе разработки
Метки используются для пояснения назначения полей редактирования и поля мемо. Присвоим свойствам
Caption этих меток значения Сервер, Строка для отправки, Ответ сервера
(рисунок 1). В одном из полей редактирования нужно задать имя или IP-адрес сервера эхо, а во втором поле
ввести отправляемую на сервер символьную строку. После этого, сначала, вам нужно связаться с сервером, для чего
щелкнуть на кнопке Подключиться. А затем щелкнуть на кнопке Отправить. Оставшиеся
две кнопки Отключиться и Прекратить выполняют обратные рассмотренным двум
кнопкам действия.
Обработчики событий OnClick первых двух командных кнопок приводятся ниже. В них вызываются
соответствующие методы Connect и Disconnect. Перед вызовом метода Connect свойству
Host присваивается значение свойства Text поля редактирования Edit1.
procedure TForm1.Button1Click(Sender: TObject); //Подключение к серверу. begin NMEcho1.Host := Edit1.Text; NMEcho1.Connect; end; procedure TForm1.Button2Click(Sender: TObject); //Отключение от сервера begin NMEcho1.Disconnect; end;
Обработчик нажатия на кнопку Отправить приводится ниже.
procedure TForm1.Button3Click(Sender: TObject); //Кнопка Отправить begin Memo1.Lines.Add(NMEcho1.Echo(Edit2.Text)+'время ['+ FloatToStr(NMEcho1.ElapsedTime)+']'); end;
Эта процедура записывает в поле мемо ответ сервера и время ответа сервера в миллисекундах. Собрав небольшую статистику
по времени ответа, вы сможете составить представление о скорости реакции сервера.
Ниже приведен листинг нашего примера.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Psock, NMEcho; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; Label2: TLabel; Edit2: TEdit; Memo1: TMemo; Label3: TLabel; Button3: TButton; Button4: TButton; NMEcho1: TNMEcho; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Подключение к серверу. begin NMEcho1.Host := Edit1.Text; NMEcho1.Connect; end; procedure TForm1.Button2Click(Sender: TObject); //Отключение от сервера begin NMEcho1.Disconnect; end; procedure TForm1.Button3Click(Sender: TObject); //Кнопка Отправить begin Memo1.Lines.Add(NMEcho1.Echo(Edit2.Text)+'время ['+ FloatToStr(NMEcho1.ElapsedTime)+']'); end; procedure TForm1.Button4Click(Sender: TObject); //Кнопка Прекратить begin NMEcho1.Abort; end; end.
Текст этого приложения можно взять здесь.
На следующем шаге мы рассмотрим компонент TNMFinger.