Разработка сетевых приложений
Покупка
Автор:
Кручинин Владимир Викторович
Год издания: 2013
Кол-во страниц: 120
Дополнительно
Изложены основы разработки сетевых приложений, базирующихся на клиент/серверной модели. Даны основные понятия и логические основы компьютерных сетей. Рассмотрены: организация распределенных многопроцессных и многопоточных приложений; средства синхронизации потоков и процессов. Приводятся методы и средства межпроцессного обмена данными (сокеты. удаленный вызов процедур, логические каналы). Показаны примеры построения функциональных расширений WWW-сервера на основе интерфейсов CGI и ISAPI.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Федеральное агентство по образованию ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники В.В. Кручинин РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ Учебное пособие 2013
Кручинин В.В. Разработка сетевых приложений: Учебное пособие. — Томск: Томский государственный университет систем управления и радиоэлектроники, 2013. — 120 с. Изложены основы разработки сетевых приложений, базирующихся на клиент/серверной модели. Даны основные понятия и логические основы компьютерных сетей. Рассмотрены: организация распределенных многопроцессных и многопоточных приложений; средства синхронизации потоков и процессов. Приводятся методы и средства межпроцессного обмена данными (сокеты, удаленный вызов процедур, логические каналы) Показаны примеры построения функциональных расширений WWW-сервера на основе интерфейсов CGI и ISAPI. Кручинин В.В., 2013 ТУСУР, 2013
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ .......................................................................................... 6 1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ............................................................................... 7 1.1 Структура сети ............................................................................ 7 1.2 Протоколы ................................................................................... 9 1.3 Адреса и имена ......................................................................... 11 1.4 Основные протоколы транспортного уровня UDP и TCP ... 12 1.5 Основные службы TCP/IP........................................................ 12 1.6 Порт ............................................................................................ 13 2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ ............................................................................................. 14 2.1 Модель клиент/сервер .............................................................. 14 2.2 Операционные системы ........................................................... 16 2.3 Серверное программное обеспечение .................................... 17 2.4 Клиентское программное обеспечение .................................. 20 3 ПРОГРАММНЫЕ ИНТЕРФЕЙСЫ .............................................. 21 3.1 Сокеты ........................................................................................ 21 3.1.1 Основные понятия .............................................................. 21 3.1.2 Основные функции API сокетов ....................................... 24 3.1.3 Простейшая реализация модели клиент/сервер на основе сокетов ............................................................... 25 3.1.4 Описание API-winsock2 ..................................................... 27 3.2 Каналы (Pipes) ........................................................................... 34 3.2.1 Создание каналов ............................................................... 34 3.2.2 Создание соединения с помощью именованных каналов ................................................................................ 36 3.2.3 Передача данных по именованному каналу .................... 38 3.2.4 Простейший пример ........................................................... 38 3.3 Удаленный вызов процедур (RPC — remote call procedure) .... 40 3.3.1 RPC для открытых систем ................................................. 40 3.3.2 RPC для Windows ............................................................... 41 3.3.2.1 Подготовка сервера к соединению ............................. 43 3.3.2.2 Обслуживание клиентских вызовов ........................... 46 3.3.2.3 Соединение клиента с сервером ................................. 46
3.3.2.4 Создание дескриптора соединения ............................ 47 3.3.2.5 Вызов удаленной процедуры ...................................... 48 3.3.2.6 Нахождение серверной программы ............................ 49 3.3.2.7 Передача параметров от клиентского приложения серверному .................................................................... 49 3.3.3 Пример создания сетевого приложения на основе RPC Windows .................................................... 50 3.3.3.1 Определение интерфейса ............................................. 51 3.3.3.2 Генерация UUID .......................................................... 52 3.3.3.3 IDL файл ........................................................................ 52 3.3.3.4 Файл конфигурации ..................................................... 53 3.3.3.5 Генерация файла заглушки .......................................... 54 3.3.3.6 Клиентское приложение .............................................. 55 3.3.3.7 Серверное приложение ................................................ 58 3.3.3.8 Завершение работы сервера ........................................ 60 4 МНОГОПОТОЧНЫЕ ПРИЛОЖЕНИЯ ........................................ 62 4.1 Процессы ................................................................................... 62 4.2 Потоки (Thread)......................................................................... 66 4.3 Синхронизация потоков ........................................................... 69 4.4 Атомарный доступ .................................................................... 70 4.5 Критические секции ................................................................. 71 4.6 Синхронизация потоков в системном режиме ...................... 73 4.6.1 События (Events) ................................................................ 76 4.6.2 Ожидаемые таймеры .......................................................... 78 4.6.3 Семафоры ............................................................................ 80 4.6.4 Мьютексы ............................................................................ 81 4.7 Пулы потоков ............................................................................ 82 4.7.1 Очередь асинхронных вызов функций ............................. 83 4.7.2 Использование порта завершения ввода/вывода ............ 83 4.7.3 Пример организации пула потоков .................................. 85 5 ПРОСТЕЙШЕЕ СЕТЕВОЕ ПРИЛОЖЕНИЕ, ОСНОВАННОЕ НА СОКЕТАХ ................................................... 88 5.1 Сервер ........................................................................................ 88 5.2 Клиентское приложение .......................................................... 91 6 РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ НА ОСНОВЕ WWW-СЕРВЕРА ................................................... 94 6.1 Обзор технологий ..................................................................... 94
6.2 Программирование CGI-скриптов .......................................... 97 6.2.1 Описание интерфейса ........................................................ 97 6.2.2 Взаимодействие WWW-сервера и CGI-программы ..... 100 6.2.3 Переменные среды о сервере .......................................... 101 6.3 Программный интерфейс ISAPI ............................................ 106 6.4 Фильтры IIS ............................................................................. 112 ЗАКЛЮЧЕНИЕ ................................................................................ 118 ЛИТЕРАТУРА ................................................................................. 119
ВВЕДЕНИЕ Развитие современных технических устройств не мыслим без внедрения технологий компьютерных сетей. Компьютерные сети являются необходимым элементом интеграции различного рода устройств и комплексов, в том числе и устройств промышленной электроники. Поэтому программирование компьютерных сетей является важным элементом подготовки современных инженеров и магистров, специализирующихся на проектировании сложных систем промышленной электроники. Данный курс «Разработка сетевых приложений» предназна чен для изучения основ и принципов создания сетевого програ ммного обеспечения, базирующегося на клиент/серверной модели. Данный курс базируется на курсах «Информатика», «Про граммирование», «Технологии программирования», «Базы данных», «Компьютерные сети», «Основы вычислительной техники», «Операционные системы», «Введение в интернет» Курс имеет следующую структуру: 1. Основные понятия и логические основы компьютерных сетей. 2. Организация распределенных многопроцессных и много поточных приложений. 3. Средства синхронизации потоков и процессов. 4. Средства межпроцессоного обмена данными (сокеты, удаленный вызов процедур, логические каналы). 5. Структура и простой пример организации клиент/сервер ного приложения. 6. Построение функциональных расширений WWW-сервера на основе интерфейсов CGI и ISAPI. Для изучения данного курса необходимо знание и наличие практических навыков программирования на языке программирования С++ для операционной системы MS Windows.
1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ 1.1 Структура сети Компьютерная сеть это совокупность компьютеров и дру гих устройств, соединенных с помощью средств телекоммуникации с целью эффективной обработки данных и разделения ресурсов [14]. На рис. 1 показаны основные элементы компьютерной сети. Рис. 1 — Структура компьютерной сети Компьютерная сеть состоит из рабочих станций, серверов, сетевого оборудования, различных устройств (принтер, плоттер, и пр.) Рабочая станция это, как правило, персональный компьютер на котором работает клиент (пользователь компьютерной сети). Сервер, специально выделенный в сети компьютер, обеспе чивающий обслуживание запросов некоторого множества клиентов.
Подсеть — компьютерная сеть, входящая в другую компь ютерную сеть. По назначению выделяют: файл сервер — предназначен для хранения и архивации файлов; сервер печати — предназначен для управления одним или несколькими принтерами; почтовый сервер — предназначен для хранения и обра ботки электронной почты; факс сервер предназначен для управления одним или не сколькими факсами; телефонный сервер обычно обеспечивает связь между те лефонной сетью и сетью Интернет; прокси сервер — предназначен для обеспечения эффек тивной работы клиента в сети (например, в Интернет через прокси-сервер все пользователи некоторой локальной сети могут иметь доступ в Интернет используя один IP-адрес); сервер удаленного доступа обеспечивает доступ к ком пьютерной сети через модемные или другие линии связи; сервер приложений сервер, обеспечивающий выполне ние специфических программ, необходимых для конкретной группы пользователей; игровой сервер обеспечивает выполнение сетевых игр; веб сервер обеспечивает доступ и манипулирование HTML-документами в сети Интернет. сервер баз данных обеспечивает доступ и манипулиро вание к базам данных. Сетевые устройства: хабы (hub) предназначены для организации рабочей группы; мосты (bridge) предназначены для соединения двух сегментов сети и локализации трафика в пределах каждого из них; переключатели (switch) предназначены для соединения нескольких сегментов локальной вычислительной сети; маршрутизатор (роутер) предназначен для объединения нескольких сетей различной конфигурации.
Классификация компьютерных сетей Компьютерный сети можно классифицировать по ряду при знаков. :По размеру, охваченной территории выделяют: Локальные сети (LAN, Local Area Network). Территориальные сети (MAN, Metropolitan Area Network). Глобальные вычислительные сети (WAN, Wide Area Net work). По типу сетевой топологии встречаются: Шина. Звезда. Кольцо. Решётка. Смешанной топологии. По архитектуре сети распределяют на: одноранговые (peer-to-peer), все компьютеры в сети оди наковые; клиент/сервер, когда часть компьютеров являются серве рами, а другая – клиентами. Модель взаимодействия «клиент/сервер» предполагает, что сервер находится в пассивном состоянии ожидания запроса клиентов. Клиент находится в активном состоянии, инициирует обращение к серверу на обслуживание. Затем клиент ждет ответа на посланный запрос, в то время как последний обрабатывается сервером. 1.2 Протоколы Протоколом в компьютерных сетях называют набор правил для специфического типа связи. Для обеспечения обмена данными между узлами сети необ ходимо выполнить следующие действия: 1) произвести пакетирование данных; 2) определить пути пересылки данных; 3) осуществить физическую пересылку; 4) регулировать скорости пересылки данных;
5) обеспечить полную сборку полученных данных, без поте рянных частей; 6) осуществить проверку полученных данных на наличие дублированных фрагментов; 7) информировать отправителя о том, сколько было успешно передано данных; 8) обеспечить пересылку данных в нужное приложение; 9) произвести обработку ошибок. В результате выполнения этих операций программное обес печение существенно усложняется. Разбивая соответствующие действия по уровням, и записывая их в виде правил, получаем 7 уровневую модель взаимосвязи открытых компьютерных сетей (OSI): Уровень Определение Протоколы Физический Обеспечивает передачу информации в виде физических сигналов ISDN RS-232 Канальный Обеспечивает формирование и передачу кадров Ethernet Token ring Fibre Channel HDLC Сетевой Обеспечивает управление передачей пакетов через промежуточные узлы сети ICMP IP IPX Транспортный Обеспечивает управление передачей данными между оконечными пунктами компьютерной сети SPX TCP UDP RTCP Сеансовый Презентационный Прикладной Обеспечивают поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. DNS FTP Gopher HTTP IMAP IRC LDAP NTP NNTP