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