- •Разработка прикладных программ сетевого обмена данными в среде delphi
- •Лабораторная работа № 1 разработка прикладной программы обмена данными в сети internet
- •2. Программа получения файлов по http и ftp протоколам
- •Лабораторная работа № 2 разработка прикладной программы обмена сообщениями в локальной сети
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Воронежский государственный технический
университет
Кафедра систем автоматизированного проектирования
и информационных систем
Разработка прикладных программ сетевого обмена данными в среде delphi
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторным работам по курсу
«Сети ЭВМ и телекоммуникации»
для студентов специальности 200700 «Системы автоматизированного проектирования»
очной формы обучения
Воронеж 2012
Составители: канд. техн. наук Д.Э. Короткевич,
преп. С.И.Короткевич.
УДК 681.3
Разработка прикладных программ сетевого обмена данными в среде DELPHI. Методические указания к лабораторным работам по курсу «Сети ЭВМ и телекоммуникации» для студентов специальности 200700 «Системы автоматизированного проектирования» очной формы обучения / Воронеж. гос. техн. ун-т. Сост.: Д.Э.Короткевич, С.И.Короткевич,. Воронеж, 2012. 39 с.
Методические указания содержат теоретические и практические основы разработки программного обеспечения обмена данными по http и ftp протоколам, а также использования интерфейса сокетов в вычислительных сетях с помощью среды программирования Delphi.
Предназначено для студентов 4 курса.
Печатается по решению редакционно-издательского совета Воронежского государственного технического университета
Воронежский государственный технический университет, 2012
Лабораторная работа № 1 разработка прикладной программы обмена данными в сети internet
Цель работы: изучение принципов работы протоколов и разработка прикладных программ, осуществляющих процесс обмена данными в сети Internet.
Для разработки программы необходимо использовать среду Delphi версии 5.0 или старше под управлением ОС Windows NT/2000/XP.
Краткие теоретические сведения
Система гипермедиа WWW
WWW (World Wide Web - всемирная паутина) - самый популярный и интересный сервис Интернет сегодня, самое популярное и удобное средство работы с информацией.
WWW работает по принципу клиент-сервер: существует множество серверов, которые по запросу клиента возвращают ему гипермедийный документ - документ, состоящий из частей с разнообразным представлением информации (текст, звук, графика, трехмерные объекты и т.д.), в котором каждый элемент может являться ссылкой на другой документ или его часть. Ссылки эти в документах WWW организованы таким образом, что каждый информационный ресурс в глобальной сети Интернет однозначно адресуется, и документ, который Вы читаете в данный момент, способен ссылаться как на другие документы на этом же сервере, так и на документы (и вообще на ресурсы Интернет) на других компьютерах Интернет. Причем пользователь не замечает этого, и работает со всем информационным пространством Интернет как с единым целым. Ссылки WWW указывают не только на документы, специфичные для самой WWW, но и на прочие сервисы и информационные ресурсы Интернет. Более того, большинство программ-клиентов WWW (browsers, навигаторы) не просто понимают такие ссылки, но и являются программами-клиентами соответствующих сервисов: ftp, gopher, сетевых новостей Usenet, электронной почты и т.д. Таким образом, программные средства WWW являются универсальными для различных сервисов Интернет, а сама информационная система WWW играет интегрирующую роль.
Вот некоторые термины, использующиеся в WWW:
1. html - hypertext markup language, язык разметки гипертекста. Это формат гипермедийных докумен тов, использующихся в WWW для предоставления информации. Формат этот не описывает то, как документ должен выглядеть, но его структуру и связи. Внешний вид документа на экране пользователя определяется навигатором - если Вы работаете за графическим или текстовым терминалом, то в каждом случае документ будет выглядеть по-своему, но структура его останется неизменной, поскольку она задана форматом html. Имена файлов в формате html обычно оканчиваются на html (или имеют расширение htm в случае, если сервер работает под MS-DOS или Windows).
2. URL - uniform resource locator, универсальный указатель на ресурс. Так называются ссылки на информационные ресурсы Интернет.
3. http - hypertext transfer protocol, протокол передачи гипертекста. Это название протокола, по которому взаимодействуют клиент и сервер WWW.
WWW - сервис прямого доступа, требующий полноценного подключения к Интернет, и более того, часто требующий быстрых линий связи, в случае, если документы, которые Вы читаете, содержат много графики или другой нетекстовой информации. Однако существуют мосты, позволяющие получать информацию, содержащуюся в WWW, посредством электронной почты. Возможность такая есть, но таких мостов мало, да и толку от них немного - чтобы успешно использовать возможности WWW, требуется прямой доступ в Интернет, а при его отсутствии теряются многие плюсы, создавшие WWW сегодняшнюю популярность. Кроме того, некоторые возможности, имеющиеся при обычной работе, просто недоступны через электронную почту. Это, в основном, относится к элементам интерактивности в WWW. Например, в языке html поддерживаются формы. Пользователь вводит в них некоторую информацию, которая затем может передаваться на сервер. Таким образом заполняются анкеты, регистрационные карты, проводятся социологические опросы.
Практически любая информация, которая предоставляется в публичный доступ, отображается средствами WWW. Если какая-та информация не может быть помещена в WWW, то это обусловлено некоторыми ограничениями и недостатками WWW. Во-первых, соединение между клиентом и сервером WWW одноразовое: клиент посылает запрос, сервер выдает документ, и связь прерывается. Это значит, что сервер не имеет механизма уведомления клиента об изменении или поступлении новых данных. Проблема решается несколькими способами: разрабатывается новая версия протокола http, которая будет позволять длительное соединение, передачу данных в несколько потоков, разделение каналов передачи данных и управления ими. Если она будет реализована и станет поддерживаться стандартным программным обеспечением WWW, то это решит снимет вышеописанные недостатки. Другой путь предлагается с использованием навигаторов, которые смогут локально исполнять программы на интерпретируемых языках - как это сделано в проекте Java компании Sun Microsystems, о котором будет рассказано ниже. Следующая проблема WWW - недостаточность языка описания документов html для решения многих задач. Например, html не предусматривает вывод математических символов, и текста уменьшенного по сравнению со стандартным размером. Эта задача решается тем же образом, что и предыдущая – разработкой новых версий языка html и новых типов навигаторов, расширяемых произвольным образом.
Усилия эти затруднены децентрализованностью WWW - например, сегодня стандартом становятся не те расширения языка html, которые лучше, а те, которые привносятся самыми популярными навигаторами. Децентрализованность несет и множество других проблем: отсутствие общего каталога серверов и средств тотального поиска по ним.
Однако и эта проблема решается, причем более успешно, чем предыдущие - сегодня есть и каталоги, и поисковые системы, которые, если и не являются глобальными, то тем не менее охватывают достаточно большую часть документов WWW, чтобы быть полезными и успешно применяться для поиска информации.
Протокол и утилита обмена файлами FTP
Протокол FTP (File Transfer Protocol - Протокол передачи файлов) предназначен для передачи файлов между машинами без установления дистанционного соединения между ними. С его помощью можно передавать файлы, работать с каталогами и пользоваться электронной почтой, но он не позволяет запускать программы на удаленной ЭВМ.
Для своей работы FTP использует транспортный протокол TCP, но связь по FTP поддерживается с помощью двух соединений: по одному из них передаются команды FTP, а по другому - данные. Поэтому программная реализация FTP предполагает работу двух процессов на каждой из взаимодействующих машин. Первый из них отвечает за передачу команд и называется протокольным интерпретатором (PI - protocol interpreter), а второй - за передачу данных и называется процессом передачи данных (DTP - data transfer process). Протокол TCP обеспечивает установление, разрыв соединения и надежность передачи данных. На удаленной ЭВМ (сервере) процессу передачи данных соответствует порт 20, а протокольному интерпретатору - порт 21.
Протокол FTP использует для своей работы специальные внутренние команды. Эти команды могут использоваться специализированным программным обеспечением и администратором системы, но обычному пользователю они, как правило, недоступны. Пользователи для работы с протоколом FTP используют сервисные утилиты.
На локальной ЭВМ (клиенте) может выполняться любое пользовательское приложение, обеспечивающее соединение по FTP. В настоящее время разработано большое количество программ, обеспечивающих работу с этим протоколом. Но широко известна самая простейшая утилита, которая носит то же название, что и протокол - ftp.
Общие принципы работы с утилитой ftp
При запуске утилиты ftp требуется указать имя или IP-адрес удаленной машины, с которой требуется установить соединение. Если этот адрес не указан, то ftp переходит в командный режим без установления соединения. Тогда для начала сеанса связи надо воспользоваться командой open. После того, как соединение установлено, необходимо пройти авторизацию доступа, для чего требуется ввести имя и пароль пользователя. В большинстве систем право доступа имеют только зарегистрированные пользователи, но иногда допускается так называемый "анонимный" вход, который будет рассмотрен далее. При работе с ftp имя и права пользователя определяются удаленной, серверной, а не локальной ЭВМ (в общем случае имена пользователя на сервере и клиенте могут быть различны). Для работы с каталогами, копирования и удаления файлов с удаленной машины пользователь должен располагать соответствующими правами, иначе эти команды выполняться не будут.
Следует обратить внимание, что и после установления соединения с удаленной ЭВМ, все команды пользователя ftp выполняются относительно локальной ЭВМ. Особенно аккуратно следует выполнять команды копирования файлов, чтобы не потерять содержимое нужных файлов на машине-клиенте.
Протокол FTP позволяет передавать файлы в нескольких форматах, которые в общем случае системно зависимы. В большинстве систем определены два режима передачи файлов - текстовый и двоичный. Текстовый файл состоит из строк ASCII-символов, разделенных кодами перевода строки и возврата каретки, при его передаче выполняются действия по перекодировке символов. Для двоичных файлов не предусмотрено никакого определенного формата и никакой перекодировки, их передача осуществляется быстрее. Текстовый файл можно передавать как двоичный, но не наоборот.
Типичный сеанс работы с ftp включает следующие этапы:
запуск утилиты, установление соединения с удаленной ЭВМ;
переход в требуемый каталог на удаленной ЭВМ (сервере);
выбор режима передачи файлов;
передача данных согласно командам пользователя;
завершение работы, разрыв соединения.
Эти процедуры выполняются последовательно в каждом сеансе. Самые распространенные команды пользователя в утилите ftp приведены в табл. 1.
Более подробное описание команд утилиты ftp можно получить в предлагаемой литературе и в руководствах по работе с утилитой. Как уже было сказано выше, для различных ОС существует множество других приложений, обеспечивающих работу с протоколом FTP. Такого рода утилиты могут обладать рядом дополнительных возможностей.
Возможности работы с FTP при анонимном доступе
Протокол FTP широко используется для обмена данными в сети Internet. Многие сервера сети поддерживают этот протокол. Поскольку количество пользователей в этой сети очень велико, то задача выделения каждому из них индивидуальных прав доступа представляется абсолютно нереальной. В то же время, большое число серверов стремится предоставить услуги по обмену данными максимально возможному количеству клиентов сети. Например, такие услуги предоставляют сервера сервисных центров фирм, занимающихся распространением свободно используемого программного обеспечения.
В таких случаях для установления соединения по протоколу FTP используется метод анонимного доступа. В этом варианте в качестве имени пользователя используется слово anonymous, а вместо пароля - чаще всего слово guest (гость).
Таблица 1 - Наиболее употребительные команды ftp
Команда |
Параметры |
Описание |
ascii |
|
Переключиться в режим передачи текстовых файлов |
binary |
|
Переключиться в режим передачи двоичных файлов |
cd |
имя каталога |
Сменить рабочий каталог на удаленной ЭВМ |
close |
|
Закрыть соединение с удаленной ЭВМ |
del |
имя файла |
Удалить файл на удаленной ЭВМ |
dir |
маска файлов |
Отобразить содержимое текущего каталога сервера |
get |
имя файла |
Получить файл с удаленной ЭВМ |
hash |
on/off |
Включить или выключить режим вывода знака "#" для каждого переданного блока данных при передаче файлов |
help |
|
Получить подсказку |
lcd |
имя каталога |
Сменить рабочий каталог на локальной ЭВМ |
mget |
маска файлов |
Получить несколько файлов с удаленной ЭВМ |
mput |
маска файлов |
Отправить несколько файлов на удаленную ЭВМ |
open |
адрес ЭВМ |
Установить соединение с указанной ЭВМ |
put |
имя файла |
Передать файл на удаленную ЭВМ |
pwd |
|
Вывести имя текущего каталога |
quote |
команда |
Передать команду непосредственно FTP (для ввода команд администратора) |
quit |
|
Завершить работу с утилитой |
При анонимном доступе пользователь имеет, как правило, очень ограниченные права. Чаще всего при анонимном доступе пользователь может только перемещаться по ограниченному перечню каталогов и получать файлы с удаленной ЭВМ (выполнять команды get и mget).
Метод анонимного доступа - это основной метод, который используют для обмена данными по протоколу FTP программы-браузеры сети Internet, например, широко распространенные программы "Internet Explorer"и "Netscape Navigator". Эти программы имеют возможность только получать файлы с удаленных ЭВМ, в то время, как полный доступ по протоколу FTP дает пользователю также возможность передавать файлы на удаленные ЭВМ. Имя и пароль для анонимного доступа в этих программах можно настраивать.
Программирование взаимодействия программ на основе прикладных протоколов
Во многих ОС прикладные протоколы реализованы в различных утилитах. Эти утилиты ориентированы, прежде всего, на работу с пользователями операционных систем. Однако часто возникает необходимость осуществить обмен данными непосредственно между прикладными программами, минуя вмешательство человека или при его ограниченном участии. Тогда у разработчиков программ возникает потребность в том, чтобы сами прикладные программы могли непосредственно использовать те же самые протоколы, что и описанные выше утилиты. Естественно, к этому нет никаких препятствий - прикладные протоколы сети Internet являются открытыми протоколами, их команды и принцип работы известны и регламентированы общедоступными стандартами.
Можно разработать программу, которая будет обеспечивать обмен по выбранному протоколу с любой стороны - и со стороны сервера, и со стороны клиента. Важно только, чтобы такая программа соответствовала спецификации выбранного протокола. Если же это будет не так, и вновь созданная программа не будет удовлетворять требованиям протокола или будет удовлетворять им не полностью, то она не сможет установить связь и осуществить обмен данными с другими программами и утилитами, уже существующими в сети..
Поскольку в качестве транспортного протокола для всех протоколов прикладного уровня используется TCP, то чтобы реализовать обмен данными по любому выбранному протоколу необходимо использовать обмен данными на основе именно TCP. Для этого в составе многих ОС имеются специальные библиотеки программных средств, позволяющие прикладным программам пользователя осуществлять обмен данными по протоколу TCP.
Такие библиотеки позволяют осуществлять самые простые операции: установить связь с ЭВМ, для которой известны адрес и порт связи, передать блок данных по протоколам TCP или UDP, получить блок данных, поступивший на локальную ЭВМ.
Средства реализации прикладных протоколов Internet в среде разработки Borland Delphi
В среде программирования Borland Delphi существуют прикладные библиотеки для реализации прикладных протоколов Internet.
Для работы с прикладным протоколом необходимо создать экземпляр класса, реализующего такую работу. Следующим действием, как правило, становится установка необходимых параметров для созданного класса - примерами таких параметров служат, прежде всего, адрес и порт ЭВМ, с которой будет устанавливаться соединение, затем, имя и пароль пользователя и т.д. Конкретный состав параметров зависит от типа протокола и того, для какой цели его планируется использовать.
После того, как все необходимые параметры заданы, можно инициировать обмен данными. Для этого нужно вызвать некоторый метод протокола и передать ему нужные аргументы. Тогда объект установит соединение, а также автоматически транслирует значения всех установленных свойств в последовательность команд протокола. Когда все команды будут выполнены, прикладная программа может завершить обмен, или же, изменив какие-то данные, инициировать его снова. В процессе обмена могут возникать события, связанные, например, с разрывом соединения, ошибкой передачи данных, отсутствием прав пользователя и другими ситуациями. По многим из этих ситуаций у объектов предусмотрена активизация связанных с ними событий - функций и процедур языка программирования, в которых разработчик может предусмотреть все необходимые действия по реакции прикладной программы на событие.
По завершении обмена данными прикладная программа должна закрыть соединение и удалить экземпляр класса.
Примеры для разработки программной оболочки
1. WEB-браузер
Для разработки собственного WEB-браузера используется набор компонентов "Microsoft Internet Controls". Это значит, что Ваш браузер будет иметь те же достоинства и недостатки, что и у стандартного Internet Explorer. Единственное, что может успокоить - так это то, что интерфейс может быть таким, каким Вы захотите, потому что сделан Вашими руками.
Создание браузера заключается в следующих шагов:
1. Создайте новый проект ("File" -> "New Application") и сразу измените заголовок и иконку.
2. Установите на форму компонент "WebBrowser" (он находится на закладке "Internet" или "ActiveX") - у Вас появится белый квадрат с именем WebBrowser1.
3. Расположите на форме также компонент "CoolBar", который находится на закладке "Win32" палитры компонентов. Это панелька, которая должна выровняться по верхнему краю формы.
4. Выделите WebBrowser1 и перейдите в Object Inspector. Щелкните по свойству "Align" и в выпадающем списке выберите "alClient". "WebBrowser" должен растянуться на все свободное место формы. В результате Вы увидите нечто похожее на рис. 1.
Рис. 1 – Окно WEB-браузера |
|
5. Установите на CoolBar1 панель "ToolBar" из закладки "Win32" и "ComboBox" из закладки "Standart" палитры компонентов (Все это Вы должны расположить именно внутри CoolBar1). После этого нужно выделить CoolBar1 и перейти в ObjectInspector. Здесь необходимо изменить строку "AutoSize" на "true" (по умолчанию она "false").
6. Выделите ComboBox1 (выпадающий список) и перейдите в ObjectInspector. Здесь необходимо перейти на закладку "Events", выбрать строку "OnKeyDown" и ввести имя процедуру (двойное нажатие кнопки мыши). Delphi создаст процедуру, которая будет вызываться каждый раз, когда Вы будете вводить какую-нибудь букву в "ComboBox". Здесь Вы должны написать следующее:
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text); end;
7. Запустите программу, введите какой-нибудь адрес в строку ComboBox и нажмите клавишу Enter Если вы правильно ввели адрес, то в WebBrowser1 через несколько минут должен появиться указанная страница.
Введение дополнительных возможностей в WEB-браузер.
Выберите ToolBar1 и перейдите в ObjectInspector. Здесь нужно изменить свойства "AutoSize", "ShowCaption" и "Flat" на "true" (все они по умолчанию равны false). Нажмите правую кнопку мыши на ToolBar1 и из появившегося меню выберите пункт "New Button". На ToolBar1 должна появиться новая кнопка с именем "ToolButton1". Выделите ее и в ObjectInspector-е поменяйте свойство Caption на "Открыть". Создайте еще насколько кнопок с заголовками: Назад, Вперед, Стоять, Обновить и Печать. Результат должен быть похож на рис. 2.
Рис. 2 – Окно WEB-браузера с дополнительными кнопками |
|
Установите также на форму "OpenDialog" из закладки "Dialogs" палитры компонентов.
Теперь дважды кликните по кнопке "Открыть", и Delphi автоматически создаст процедуру, которая будет вызываться при нажатии этой кнопки. В этой процедуре нужно написать следующее:
procedure TForm1.ToolButton1Click(Sender: TObject); begin if OpenDialog1.Execute then begin WebBrowser1.Navigate(OpenDialog1.FileName); ComboBox1.Text:=OpenDialog1.FileName; end; end;
Теперь можно запустить программу и открыть с помощью этой кнопки любой файл на диске.
Для работы кнопки "Назад" необходимо в процедуре, соответствующей событию OnClick вставить строку:
procedure TForm1.ToolButton2Click(Sender: TObject); begin WebBrowser1.GoBack; end;
Для кнопки "Вперед" напишите следующий код:
procedure TForm1.ToolButton3Click(Sender: TObject); begin WebBrowser1.GoForward; end;
Для кнопки "Стоп" напишите:
procedure TForm1.ToolButton4Click(Sender: TObject); begin WebBrowser1.Stop; end;
Для кнопки "Обновить":
procedure TForm1.ToolButton5Click(Sender: TObject); begin WebBrowser1.Refresh; end;
И, наконец, для кнопки "Печать":
procedure TForm1.ToolButton6Click(Sender: TObject); var PostData, Headers:OLEvariant; begin WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT,PostData, Headers); end;
В этой строке посылается команду через OLE ядру IE.
Ваш браузер почти готов. Можете немного изменить работу программы для лучшего восприятия.
Для этого размещаем на форме StatusBar из закладки "Win32" и изменяем у него свойство "SimplePanel" в true (по умолчанию false). Выделяем WebBrowser1 и переходим на закладку "Events" в ОbjecInspector-е. Дважды кликните по строке "OnStatusTextChange" и напишите в созданной процедуре следующее:
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject; const Text: WideString); begin StatusBar1.SimpleText:=Text; end;
Здесь мы присваиваем переменную "Text" (в ней хранится текст подсказки) в StatusBar1. Теперь можно видеть подсказки в строке состояния.
Добавьте ещё индикатор загрузки. Для этого расположите на форме ProgressBar из закладки "Win32". Измените у него свойство "Align" на "alBottom", чтобы он находился вдоль нижней границы формы. Снова выделите WebBrowser1 и щелкните по закладке "Events" в ОbjecInspector-е. Дважды щелкните по строке "OnProgressChange" и напишите в созданной процедуре:
procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin ProgressBar1.Max:=ProgressMax; ProgressBar1.Position:=Progress; end;
Здесь созданному ProgressBar1 (индикатор загрузки) присваивается максимальное значение (ProgressMax) и текущее значение (Progress).