Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

1. Опис протоколу RFC 1288 (Finger).



1. Опис протоколу RFC 1288 (Finger).

 

Протокол Finger забезпечує простий інтерфейс з віддаленними программами, забезпечуючими інформацію про користувачів мережі. Протокол Finger це протокол обміну інформацією між користувачами на базі протоколу TCP з використанням порту 79 (восьмирічний номер – 117). Локальний хост відкриває TCP-з’єднання з віддаленним хостом через порт Finger. Після цього віддаленна сторона отримує доступ до RUIP для обробки запросів про користувачів. Локальний хост посилає RUIP одну строку запросу на основі специфікацій запросів Finger та чекає відкліку RUIP. Після отримання й обробки запросу RUIP повертає відповідь, ініціюя завершення сеансу і розрив з’єднання. Локальний хост отримує відповідь та сигнал про закриття сеансу, після чого розриває з’єднання.

Протокол Finger відображує данні й уся передаваєма інформація повинна бути представлена у форматі ASCII без біту контролю парності а також з завершенням строк символами переводу строки та повернення коретки (ASCII 13, ASCII 10). Така вимога виключає використання інших форматів типу EBCDIC. Крім того, будь-який символ з кодом ASCII від 128 до 255 повинні трактуватися як символи інших мов. Відмітемо, що послідовність символів ASCII 13, ASCII 10 не відображується на екрані, оскільки вона означає лише перехід на початок нової строки.

 

2. Узагальнений алгоритм тестування системи.

 

Спочатку у властивостях клієнта встановлюються введені користувачем адреса та порт сервера Finger. Далі у чотирьохпроходному циклі серверу Finger відсилається команда та вимірюється час між її відправкою та отриманням відповіді. Відповіді сервера та розрахований час передачі-прийому виводяться на екран. Виконується від’єднання від сервера та збереження результатів у файлі - протоколі.

Опис WinAPI – функцій та компонентів Indy9 для даного рішення.

Для даного рішення використовуються у якості клієнта та сервера такі компоненти бібліотеки Indy9:

- TIdFinger – у якості клієнта;

- TIdFingerServer – у якості сервера.

Також використовуються їх методи:

- IdFngFinger.Finger – виконує з'єднання, отримання відповіді від сервера та відключення від сервера;

- IdFingerServer1CommandFinger – виконує формування відповіді сервера;

Також використовується функція QueryPerformanceFrequency(f), для вимірювання часу прийому – передачі запросу, та функція mmoQuerryResults.Lines.SaveToFile для збереження результатів у файлі.

 

Графічна схема алгоритму програм




 

 

Практична частина

 

Текст програми (клієнт):

 

unit main;

 

interface

 

uses

windows, messages, graphics, controls, forms, dialogs, stdctrls, buttons,

SysUtils, Classes, IdBaseComponent, IdComponent, IdTCPConnection,

IdTCPClient, IdFinger;

 

type

TfrmFingerDemo = class(TForm)

IdFngFinger: TIdFinger;

edtQuerry: TEdit;

lblQuerry: TLabel;

mmoQuerryResults: TMemo;

bbtnQuerry: TBitBtn;

procedure bbtnQuerryClick(Sender: TObject);

private

public

end;

 

var //змінні

frmFingerDemo: TfrmFingerDemo;

f,t1,t2:int64;

rez:real;

i:integer;

 

implementation

{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

 

procedure TfrmFingerDemo.bbtnQuerryClick(Sender: TObject);

 

begin

 

IdFngFinger.CompleteQuery:= edtQuerry.Text; //ввід адреси сервера й тексту

запросу

QueryPerformanceFrequency(f); //отримвння частоти процессору

 

for i:=1 to 4 do //цикл повторень

begin

 

QueryPerformanceCounter(t1); //визначення початкового часу

 

IdFngFinger.Finger; //з'єднання, отримання відповіді від

сервера та відключення від сервера

 

QueryPerformanceCounter(t2); //визначення кинцевого часу

 

rez:=(t2-t1)/f; //розрахунок часу запиту

 

mmoQuerryResults.Lines.Add(format('%g',[rez])+' sek'); //вивід часу запиту до

поля результатів

end;

 

mmoQuerryResults.Lines.add(IdFngFinger.Finger); //вивід повідомлення до

поля результатів

 

mmoQuerryResults.Lines.SaveToFile('c:\rezult.txt'); // збереження результатів

у файлі

end;

end.

 

Текст програми (сервер):

 

unit mainform;

 

interface

 

uses

windows, messages, graphics, controls, forms, dialogs, stdctrls,

SysUtils, Classes, IdComponent, IdTCPServer,

IdFingerServer, IdBaseComponent;

 

type

TfrmFingerServer = class(TForm)

IdFingerServer1: TIdFingerServer;

Edit1: TEdit;

Label1: TLabel;

procedure IdFingerServer1CommandFinger(AThread: TIdPeerThread;

const AUserName: String);

private

public

end;

 

var

frmFingerServer: TfrmFingerServer;

implementation

{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

 

uses

IdGlobal;

 

procedure TfrmFingerServer.IdFingerServer1CommandFinger(AThread: TIdPeerThread;

 

const AUserName: String);

 

begin

AThread.Connection.WriteLn(edit1.Text); //виконує формування відповіді

сервера

end;

 

end.

 

Екранні результати роботи програми:

 

 

 

 


Дата добавления: 2015-11-05; просмотров: 20 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Dennis Ferrer Biography | 

mybiblioteka.su - 2015-2024 год. (0.013 сек.)