КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Программирование взаимодействия программ на основе прикладных протоколовПрикладные протоколы позволяют осуществлять обмен через сеть Internet различного рода данными. Это полезное свойство, безусловно, находит практическое применение. Во многих ОС прикладные протоколы реализованы в различных утилитах (часть из которых была рассмотрена здесь и в предыдущей работе). Эти утилиты ориентированы, прежде всего, на работу с пользователями операционных систем. Однако часто возникает необходимость осуществить обмен данными непосредственно между прикладными программами, минуя вмешательство человека или при его ограниченном участии. Тогда у разработчиков программ возникает потребность в том, чтобы сами прикладные программы могли непосредственно использовать те же самые протоколы, что и описанные выше утилиты. Естественно, к этому нет никаких препятствий - прикладные протоколы сети Internet являются открытыми протоколами, их команды и принцип работы известны и регламентированы общедоступными стандартами. Для решения такой задачи можно, конечно, прибегнуть к вызову утилит ОС из прикладной программы с помощью командной строки. Такой подход прост в реализации, но имеет два недостатка: во-первых, скорость работы прикладной программы в этом варианте будет ниже, чем при непосредственном обмене данными по протоколу; во-вторых, необходимо параллельное выполнение утилиты ОС и прикладной программы с организацией взаимодействия между ними, что не всегда возможно. Гораздо эффективнее включить обмен данными по заданному протоколу непосредственно в код разрабатываемой прикладной программы. Можно разработать программу, которая будет обеспечивать обмен по выбранному протоколу с любой стороны - и со стороны сервера, и со стороны клиента (в конце концов, сами все утилиты ОС - это тоже прикладные программы, которые были когда-то кем-то разработаны). Важно только, чтобы такая программа соответствовала спецификации выбранного протокола. Если же это будет не так, и вновь созданная программа не будет удовлетворять требованиям протокола или будет удовлетворять им не полностью, то она не сможет установить связь и осуществить обмен данными с другими программами и утилитами, уже существующими в сети. (Возможно, конечно, разработать две совершенно новых программы - клиента и сервера - которые будут обеспечивать обмен данными по своему протоколу, недоступному другим, но тогда такая система перестанет быть открытой системой, и по сути, перестанет быть частью всемирной сети). Поскольку в качестве транспортного протокола для всех протоколов прикладного уровня используется TCP, то чтобы реализовать обмен данными по любому выбранному протоколу необходимо использовать обмен данными на основе именно TCP. Для этого в составе многих ОС имеются специальные библиотеки программных средств, позволяющие прикладным программам пользователя осуществлять обмен данными по протоколу TCP. В ОС типа UNIX или Linux это библиотека "сокетов" (socket - ее программный код входит в ядро ОС). В языке программирования "Си", который является базовым для этих ОС, ей обычно соответствует файл заголовков "socket.h". В ОС типа Windows NT (начиная с версии 3.5) и графических средах Windows-95/98 этот протокол реализует динамическая библиотека "WinSock.DLL" (в более ранних версиях этих ОС она не поставляется и должна устанавливаться дополнительно). Такие библиотеки позволяют осуществлять самые простые операции: установить связь с ЭВМ, для которой известны адрес и порт связи, передать блок данных по протоколам TCP или UDP, получить блок данных, поступивший на локальную ЭВМ. Этого достаточно для того, чтобы запрограммировать любой прикладной протокол и любой обмен данными, поскольку известны все команды протоколов и используемые для обмена информацией номера портов. Однако это достаточно трудоемкий процесс, поскольку необходимо корректно запрограммировать передачу всех команд выбранного протокола и реакцию на полученные команды. Поэтому к такому методу прибегают обычно только в том случае, если нет возможности использовать стандартные прикладные протоколы и приходится организовывать обмен данными по своему, специфичному протоколу (такой подход рассматривается в следующей лабораторной работы). Для реализации стандартных прикладных протоколов уже разработано большое количество программных библиотек в различных языках программирования, поэтому нет необходимости создавать их заново. Варианты таких библиотек в языке Object Pascal разработанные фирмой Borland для среды программирования Borland Delphi рассмотрены далее. Поскольку чаще всего возникает необходимость создать прикладную программу "клиентской" стороны протокола, то далее речь пойдет именно о создании программ такого рода.
|