Смекни!
smekni.com

Проектирование и разработка сетевых броузеров на основе теоретико-графовых моделей (стр. 9 из 14)

4.2.Основные процедуры броузера

WWW-сервис:

procedure TMainForm.Exit1Click – осуществляет выход из программы;

procedure TMainForm.FindAddress – запрашивает HTML-файл по указанному адресу;

procedure TMainForm.DocumentSource1Click – выводит исходный текст полученного HTML-файла;

procedure TMainForm.StopBtnClick – останавливает загрузку HTML-файла;

procedure TMainForm.RefreshBtnClick – перегружает последний полученный HTML-файл;

procedure TMainForm.BackBtnClick – вызывает предыдущий загруженный HTML-файл;

procedure TMainForm.ForwardBtnClick – вызывает последующий загруженный HTML-файл;

procedure TMainForm.ToolButton2Click – загружает объект TMail, ответственный за отправку и получение почты;

procedure TMainForm.ToolButton3Click – загружает объект TMyFtp, ответственный за обмен данных в протоколе FTP;

procedure TMainForm.ToolButton4Click – загружает объект TNewsForm, ответственный за получение и отправку новостей;

procedure TMainForm.ToolButton9Click – загружает объект TChatForm, ответственный за обмен символьной информацией между двумя удаленными компьютерами;

FTP-сервис:

procedure TMyFtp.ConnectBtnClick – соединяется с указанным FTP-сервером;

procedure TMyFtp.Disconnect – обрывает соединение с FTP-сервером;

procedure TMyFtp.CopyItemClick – выполняет копирование выбранного файла с FTP-сервера;

procedure TMyFtp.PasteFromItemClick – отсылает файл на FTP-сервер;

Chat-сервис:

procedure TChatForm.FileConnectItemClick – выполняет запрос адреса компьютера, с которым будет происходить обмен символльной информацией;

procedure TChatForm.Memo1KeyDown – считывание символа с клавиатуры и отправка его в сокет клиента;

procedure TChatForm.Disconnect1Click – разрывает соединение с удаленным компьютером;

procedure TChatForm.ClientSocketRead – считывание информации с удаленного компьютера;

News-сервис:

procedure TNewsForm.FileConnectItemClick – выполняет соединение с сервером новостей;

procedure TNewsForm.FileDisconnectItemClick – разрывает соединение с сервером новостей;

procedure TNewsForm.NNTP1DocOutput – вывод групп новостей;

Mail-сервис:

procedure TMail.CreateHeaders – создает заголовок для почтового сообщения;

procedure TMail.SendMessage – отправляет сообщение;

procedure TMail.SendFile – отправляет файл, “привязанный” к письму;

procedure TMail.SMTP1DocInput – ввод текста почтового сообщения;

procedure TMail.SMTPConnectBtnClick – выполняет соединение с почтовывм сервером;

4.3.Архитектура имитационной модели глобальной сети

Имитационная модель глобальной корпоративной сети имитирует пересылку пакета от одного компьютера к другому. При запуске программы на экране возникает схема сети, показанная на рисунке 8. Затем, при нажатии клавиши ENTER, программа переходит в текстовый режим с UNIX-подобным интерфейсом, запрашивая пользователя адрес получателя, адрес отправителя, и данные типа “String”.

Затем каждый компьютер или маршрутизатор, по которому проходит пакет, выводит на экран сообщение о приеме и дальнейшей отправке пакета адресату и время, в которое он получил и отправил пакет. Оптимальный маршрут рассчитывается на основе усовершенствованного алгоритма Форда-Беллмана.


Программа написана на языке Object Pascal 7.0.

Рис.8. Схема глобальной корпоративной сети.

4.4.Основные процедуры имитационной модели

Типы данных и переменные основной подпрограммы:

const AdjacencyMatrix : array[1..VertexQuantity,1..VertexQuantity] of byte =(

(0,1,0,1,0,0,0),

(1,1,1,0,1,0,1),

(0,1,0,1,0,0,0),

(1,0,1,0,1,0,0),

(0,1,0,0,1,1,0),

(0,0,0,0,1,0,1),

(0,1,0,0,0,1,0) ) – матрица смежности маршрутизаторов;

TYPE TAddr = record

router:byte;

domain:byte;

comp :byte;

END - адрес компьютера, состоящий из номера маршрутизатора, номера области данного маршрутизатора и номера компьютера в этой области;

TYPE TBatch = record

from:TAddr;

to_ :TAddr;

data:string;

path:array[1..20] of byte; {path is chain of router numbers}

END – пакет, состоящий из адреса отправителя, адреса получателя, данных и пути следования пакета;

TYPE TComp = object - модель компьютера, состоящая из адреса, ячейки памяти для

получения или пересылки пакета;

addr:TAddr;

mem :TBatch;

Procedure Send2Router(batch:TBatch) – процедура посылки пакета на маршрутизатор;

Procedure Send(batch:TBatch) – процедура посылки пакета внутри своей сети;

Procedure Receive(batch:TBatch;byRouter:boolean) – прием пакета;

END;

TYPE TRouter = object - модель маршрутизатора, состоящая из номера маршрутизатора,

его координат, и ячейки памяти;

num :byte;

x,y :integer;

memory :Tbatch;

state :boolean;

VAR computers : array[1..38] of TComp - массив компьютеров глобальной сети;

routers : array[1..7] of TRouter – массив маршрутизаторов;

OptimalPath : array[1..49] of byte – оптимальный путь, рассчитанный

маршрутизатором;

Procedure Receive(routerNum:byte;batch:TBatch) – прием пакета;

Procedure Send2Comp(batch:TBatch) – отправка пакета в своей сети;

Procedure CalcMinPath(sender,target:byte) – вычисление оптимального пути отправки;

Procedure Send2NextRouter(batch:TBatch;currentRouter:byte) – отправка на следующий

маршрутизатор;

END;

Заключение

В данной дипломной работе был получен следующий результат :

1.) Разработана модель сетевого броузера и корпоративной среды;

2.) Создана имитационная модель распределения информации в глобальных сетях.

3.) Написано соответствующее программное обеспечение – сетевой броузер с возможностью доступа как к WWW- протоколу, так и к сервису FTP, почтовому сервису SMTP, а также возможностью обмена символьной информацией между двумя компьютерами в ON-LINE режиме – CHAT и математическая модель корпоративной сети, имитирующая передачу информации в глобальной среде, в которой реализован разработанный усовершенствованный алгоритм поиска оптимального пути между маршрутизаторами.

Список литературы :

1. Блэк Ю. Сети ЭВМ: протоколы, стандарты, интерфейсы. М.:Мир,1990. –506 с.

2. Донской В.И. Компьютерные сети и сетевые технологии.- Симферополь:

Таврида,1999. – 135 с.

3. Калверт Ч. Delphi 4. Самоучитель. – К.: ДиаСофт, 1999. – 192 с.

4. Крамлиш К. Азбука Internet. К.:Юниор, 1998. –336 с.

5. Нанс Б. Компьютерные сети. М.:Бином, 1996. –400 с.

6. Нотон П., Шилдт Г. Полный справочник по Java. – К.: Диалектика,1997. –450 с.

7. Сван Т. Delphi 4 – “Библия” разработчика. –К.: Диалектика,1998. –500 с.

8. Яблонский С.В. Введение в дискретную математику. –М.: Наука,1986. –384 с.

9. Журнал «Компьютерное Обозрение», N36 (109) ‘97, N44 (117) ‘97

Приложение 1. Исходный текст программы “броузер”

файл main.pas

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, Menus, ComCtrls, OleCtrls, Buttons, ToolWin, Isp3;

const

CM_HOMEPAGEREQUEST = WM_USER + $1000;

type

TMainForm = class(TForm)

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

File1: TMenuItem;

Exit1: TMenuItem;

View1: TMenuItem;

DocumentSource1: TMenuItem;

NavigatorImages: TImageList;

NavigatorHotImages: TImageList;

LinksImages: TImageList;

LinksHotImages: TImageList;

CoolBar1: TCoolBar;

ToolBar1: TToolBar;

BackBtn: TToolButton;

ForwardBtn: TToolButton;

StopBtn: TToolButton;

RefreshBtn: TToolButton;

URLs: TComboBox;

HTML1: THTML;

Help1: TMenuItem;

About1: TMenuItem;

N1: TMenuItem;

Toolbar3: TMenuItem;

Statusbar2: TMenuItem;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton9: TToolButton;

SpeedButton1: TSpeedButton;

Animate1: TAnimate;

procedure Exit1Click(Sender: TObject);

procedure About1Click(Sender: TObject);

procedure DocumentSource1Click(Sender: TObject);

procedure StopBtnClick(Sender: TObject);

procedure HTML1BeginRetrieval(Sender: TObject);

procedure HTML1EndRetrieval(Sender: TObject);

procedure URLsKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure FormCreate(Sender: TObject);

procedure LinksClick(Sender: TObject);

procedure RefreshBtnClick(Sender: TObject);

procedure BackBtnClick(Sender: TObject);

procedure ForwardBtnClick(Sender: TObject);

procedure HTML1DoRequestDoc(Sender: TObject; const URL: WideString;

const Element: HTMLElement; const DocInput: DocInput;

var EnableDefault: WordBool);

procedure FormDestroy(Sender: TObject);

procedure URLsClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure Toolbar3Click(Sender: TObject);

procedure Statusbar2Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject);

private

HistoryIndex: Integer;

HistoryList: TStringList;

UpdateCombo: Boolean;

procedure FindAddress;

procedure HomePageRequest(var message: tmessage); message CM_HOMEPAGEREQUEST;

end;

var

MainForm: TMainForm;

implementation

uses DocSrc, About, SMTP, FTP, NNTP, CHAT;

{$R *.DFM}

procedure TMainForm.Exit1Click(Sender: TObject);

begin

Close;

end;

procedure TMainForm.FindAddress;

begin

HTML1.RequestDoc(URLs.Text);

end;

procedure TMainForm.About1Click(Sender: TObject);

begin

ShowAboutBox;

end;

procedure TMainForm.DocumentSource1Click(Sender: TObject);

begin

with DocSourceFrm do

begin

Show;

Memo1.Lines.Clear;

Memo1.Lines.Add(AdjustLineBreaks(HTML1.SourceText));

Memo1.SelStart := 0;

SendMessage(Memo1.Handle, EM_ScrollCaret, 0, 0);

end;

end;

procedure TMainForm.StopBtnClick(Sender: TObject);

begin

HTML1.Cancel('Cancel');

HTML1EndRetrieval(nil);

end;

procedure TMainForm.HTML1BeginRetrieval(Sender: TObject);

begin

{ Turn the stop button dark red }

StopBtn.ImageIndex := 4;

{ Play the avi from the first frame indefinitely }

Animate1.Active := True;

end;

procedure TMainForm.HTML1EndRetrieval(Sender: TObject);

begin

{ Turn the stop button grey }

StopBtn.ImageIndex := 2;

{ Stop the avi and show the first frame }

Animate1.Active := False;

end;

procedure TMainForm.URLsKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_Return then

begin

UpdateCombo := True;

FindAddress;

end;

end;

procedure TMainForm.URLsClick(Sender: TObject);

begin

UpdateCombo := True;

FindAddress;

end;

procedure TMainForm.LinksClick(Sender: TObject);

begin

if (Sender as TToolButton).Hint = '' then Exit;

URLs.Text := (Sender as TToolButton).Hint;

FindAddress;

end;

procedure TMainForm.RefreshBtnClick(Sender: TObject);

begin

FindAddress;

end;

procedure TMainForm.BackBtnClick(Sender: TObject);

begin

URLs.Text := HistoryList[HistoryIndex - 1];

FindAddress;

end;

procedure TMainForm.ForwardBtnClick(Sender: TObject);

begin

URLs.Text := HistoryList[HistoryIndex + 1];

FindAddress;

end;

procedure TMainForm.HTML1DoRequestDoc(Sender: TObject;

const URL: WideString; const Element: HTMLElement;

const DocInput: DocInput; var EnableDefault: WordBool);

var

NewIndex: Integer;

begin

NewIndex := HistoryList.IndexOf(URL);

if NewIndex = -1 then

begin

{ Remove entries in HistoryList between last address and current address }

if (HistoryIndex >= 0) and (HistoryIndex < HistoryList.Count - 1) then

while HistoryList.Count > HistoryIndex do

HistoryList.Delete(HistoryIndex);

HistoryIndex := HistoryList.Add(URL);

end

else

HistoryIndex := NewIndex;

if HistoryList.Count > 0 then

begin

ForwardBtn.Enabled := HistoryIndex < HistoryList.Count - 1;

BackBtn.Enabled := HistoryIndex > 0;

end

else

begin

ForwardBtn.Enabled := False;

BackBtn.Enabled := False;

end;

if UpdateCombo then

begin

UpdateCombo := False;

NewIndex := URLs.Items.IndexOf(URL);

if NewIndex = -1 then

URLs.Items.Insert(0, URL)

else

URLs.Items.Move(NewIndex, 0);

end;

URLs.Text := URL;

Statusbar1.Panels[0].Text := URL;

end;

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Shift = [ssAlt] then

if (Key = VK_RIGHT) and ForwardBtn.Enabled then

ForwardBtn.Click

else if (Key = VK_LEFT) and BackBtn.Enabled then