Компонент TNMEcho

   
На этом шаге мы рассмотрим компонент 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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий