Проектирование и разработка сетевых броузеров на основе теоретико-графовых моделей
приведены компоненты управления Internet ActiveX в порядке их расположения
на экране.
FTP (Internet File Transfer Protocol). Пересылает файлы и данные между
локальным компьютером и клиентом.
HTML (Hypertext Markup Language). Поддерживает просмотр документов
формата HTML. Также может использоваться для синтаксического анализа команд
HTML.
HTTP (Hypretext Transport Protocol). Извлекает документы в формате HTTP
без предварительного просмотра и возможности обработки изображений.
NNTP (Network News Transport Protocol). Поддерживает чтение и отправку
новостей.
POP (Post Office Protocol). Поддерживает почтовую службу UNIX или других
серверов, соответствующих стандарту POP3.
SMTP (Simple Mail Transfer Protocol). Обеспечивает доступ к почтовым
сервером SMTP.
TCP (Transmission Control Protocol). Поддерживает протокол TCP для
приложений класса клиент/сервер.
Приложения Delphi для Internet
Для формирования средств доступа к HTML – документам через Internet
достаточно поместить компонент HTML в экранную форму и создать процедуру
обработки события, которая будет вызывать метод RequestDoc этого
компонента, как показано ниже :
HTML1.RequestDoc(URLs.text);
Предполагается, что параметр URLs является объектом ComboBox или каким-
то другим компонентом, имеющим свойство text. Из указанного диапазона
объектов параметру URL может быть назначен любой объект. Компоненту
RequestDoc можно передать и параметр-строку :
HTML1.RequestDoc(‘www.inprise.com’);
Объекты компонента HTML весьма полезны для получения доступа к исходным
текстовым данным HTML – документов. С этой целью нужно связаться с узлом,
вызвав метод компонента RequestDoc. В результате будет получен доступ к
свойству SourceText HTML – документа, которое представляет собой построчный
список с «сырым» текстом документа. Предлагаемый вместе с Delphi
демонстрационный Web – броузер использует свойство SourceText для того,
чтобы показать в окне исходный HTML – документ, добавляя при этом текст в
окно редактора Memo. Можно использовать такое выражение :
Memo1.Lines.Clear;
Memo1.Lines.Add (HTML1.SourceText);
Есть два события компонента HTML, очень полезных для определения
моментов начала и окончания поиска и выбора документа. Сначала нужно
выбрать объект HTML и щелкнуть на вкладке Events окна Object Inspector.
Затем нужно дважды щелкнуть в строках событий OnBeginRetrieval и
OnEndRetrieval, чтобы Delphi сформировала заготовки процедур обработки
каждого из них.
4.Программная реализация
4.1.Архитектура системы “Броузер”
Модель броузера, представленная в данной дипломной работе, предоставляет
следующие возможности:
- Загрузка Web-страниц;
- Операции по отправке и получению почты;
- Обмен файлами по протоколу FTP;
- Возможность обмена символьной информацией между двумя удаленными
компьютерами, на которых должен быть запущен данный броузер.
Броузер написан на языке Borland Delphi 3.0.
Рис.7. Панель демонстрационного броузера.
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
BackBtn.Click;
end;
procedure TMainForm.Toolbar3Click(Sender: TObject);
begin
with Sender as TMenuItem do
begin
Checked := not Checked;
Coolbar1.Visible := Checked;
end;
end;
procedure TMainForm.Statusbar2Click(Sender: TObject);
begin
with Sender as TMenuItem do
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
|