Выдержка из текста работы
- Введение
- 1 Архитектура клиент/сервер
- 1.1 Сокеты и библиотека WinSock
- 1.2 Сервер
- 1.3 Клиент
- 2 Разработка системы передачи данных в локальной вычислительной сети
- 2.1 Анализ требований
- 2.2 Проектирование
- 3 Реализация
- 3.1 Реализация приложения «сервер»
- 3.2 Реализация приложения «клиент»
- 4 База данных «диски»
- 5 Результаты работы системы
- Заключение
- Список использованной литературы
- Приложения
1.1 Сокеты и библиотека WinSock
Связь в сети Интернет осуществляется на основе двух протоколов — TCP (Transmission Control Protocol) и IP (Internet Protocol), оба протокола объединяются в стек-протокол — TCP/IP. Помимо этого часто используется протокол UDP (User Datagram Protocol — протокол пользовательских дейтаграмм). Для связи между двумя компьютерами должен быть создан сокет.
Сокет — механизм, позволяющий независимо от протокола передачи данных организовать сетевой интерфейс между двумя компьютерами. Обращаться к сокету можно по IP-адресу и номеру порта. Различают сокеты с установлением соединения (т. е. адреса гнезд отправителя и получателя выясняются заранее, до передачи сообщений между ними — устанавливается так называемый виртуальный канал между двумя хостами в сети) — виртуальный канал и без установления соединения (адреса сокетов отправителя и получателя передаются с каждым пересылаемым сообщением) — дейтаграмма. В первом случае для передачи данных используется протокол TCP, во втором — UDP. Таким образом, сокеты могут работать как с протоколом TCP, так и с протоколом UDP. Работа дейтаграммам осуществляется быстрее виртуальных каналов, однако их надежность передачи данных ниже.
Сокеты с установлением соединения взаимодействуют по схеме клиент/сервер. Создание связи происходит по следующей схеме. Сервер создает сокет, который пассивно слушает, ожидая запросы от другого сокета. Клиент создает сокет, который посылает запрос на соединение прослушивающему сокету. По получении запроса прослушивающий порт отвечает и устанавливается соединение. После этого программы могут обмениваться данными, то есть записывать в поток и читать из потока. Это может происходить до тех пор, пока одна из программ не закроет связь. Когда клиент подсоединяется к серверу, прослушивающий сокет не прекращает ожидание запросов от клиентов. Сервер продолжает прослушивать возможные запросы от других клиентов.
Все функции работы с сокетами описаны в заголовочном файле winsock2.h. Для успешной сборки программы необходимо указать подключаемую библиотеку ws2_32.lib. Для начала работы с сетью необходимо проинициализировать библиотеку ws2_32. Для этого используется следующая функция: int WSAStartup (unsigned int wVersionRequested, struct WSAData *lpWSAData ).
При завершении работы с сокетами необходимо вызвать функцию int WSACleanup(), которая завершает работу программы с библиотекой гнезд Ws2_32. При успешном выполнении функция возвращает 0. Если произошла ошибка, возвращается ненулевое значение.
1.2 Сервер
Для того чтобы процессы-клиенты могли связаться с сервером, сервер создает сокет для обмена данными. Сокет представляет собой особый вид файла, из которого можно читать и в которой можно записывать данные. Создание сокета подразумевает вызов функции socket.
Далее осуществляется получение локального адреса, чтобы все запросы на соединения, приходящие на данную ЭВМ и обращающиеся к указанному порту, операционная система направляла данному процессу. Осуществляется вызов функции bind, в которой указывается созданный ранее сокет, IP-адрес ЭВМ и порт. В случае успеха сервер вызывает функцию listen, которая говорит операционной системе о том, что процесс ожидает поступления запросов на соединение к данному сокету.
Когда клиент вызывает функцию connect, серверу приходит запрос на соединение. Для того чтобы программа смогла вести обмен данными с клиентами и одновременно продолжать работу, сервер создает копию сокета. Таким образом создаётся новая нить, создаваемая при помощи функции _beginthread.
Далее осуществляется обмен данными. Сервер связан с БД, откуда и берётся необходимая информация. Используется СУБД MS Access. После приема данных они дешифруются.
По окончании работы с клиентом серверный процесс закрывает свою копию сокета и уничтожается.
1.3 Клиент
Для соединения клиенту так же как и серверу необходимо создание сокета.
Подключения осуществляются только тогда, когда тот процесс ожидает приема соединения. Для установки соединения необходимо указать IP-адрес ЭВМ и порт, то есть использовать функцию connect.
Далее осуществляется приём данных. Перед осуществлением передачи данные шифруются. На принимающей стороне полученные данные дешифруются.
Разрыв соединения осуществляется при помощи функции close, которая уничтожает сокет.
2.1 Анализ требований
Необходимо разработать на языке С++ клиент-серверное приложение — систему программ, осуществляющих взаимодействие посредством локальной вычислительной сети. Графический интерфейс приложения разработать, используя библиотеку MFC. Программа должна состоять из двух частей: клиента и сервера. Сетевой интерфейс между компьютерами в сети организовать с помощью сокетов. Программа «сервер» должна отправлять сообщения всем подключенным клиентам. Использовать среду программирования MS Visual Studio.
2.2 Проектирование
Исходя из требований, необходимо реализовать приложение «клиент» и приложение «сервер». Если сервер готов к работе, то он должен ожидать подключения к нему клиентов. Клиент делает запрос и принимает данные с сервера. Если сервер не готов, клиент извещается об этом.
3.1 Реализация приложения «сервер»
При запуске программы «сервер» производится инициализация библиотеки WinSock. Запускается поток прослушивания порта 250188. Вводится пароль. Выбирается источник данных — БД MS Access. Сервер ожидает обращения клиентов.
3.2 Реализация приложения «клиент»
При запуске клиента инициализируется библиотека WinSock. При нажатии кнопки ОК производится попытка подключиться к сокету сервера с указанным IP адресом и портом. Если сервер не запущен, то выводится сообщение об ошибке соединения. При удачном соединении запускается поток, в котором серверу отправляется имя клиента и начинается прослушивание сокета. Клиент делает запрос. Сервер отсылает информацию клиенту. Полученные данные выводятся на экран. При работе с сервером клиент может в любой момент прервать соединение, нажав кнопку «Выход».
4. База данных «Диски»
серверный программирование локальный сеть
В магазине продаются компакт-диски различных групп. Каждая группа имеет несколько альбомов. Каждый альбом включает несколько песен. Разработана соответствующая БД. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты). В построенной модели имеются пять сущностей.
1. disks (group, album, year, label, quantity)
Эта сущность хранит расширенную информацию о дисках.
2. Pantera (album, year, label)
Эта сущность хранит информацию об альбомах группы Pantera.
3. Metallica (album, year, label)
Эта сущность хранит информацию об альбомах группы Metallica.
4. Nirvana (album, year, label)
Эта сущность хранит информацию об альбомах группы Nirvana.
5. Nevermind (album, song, time)
Эта сущность хранит информацию об альбоме Nevermind группы Nirvana.
Атрибуты «album», «year», «label» выполняют функцию индексной связи между сущностями, которая определяет связь между таблицами Pantera, Metallica, Nirvana — Nevermind.
Модель данной БД представлена на рисунке 1.
Размещено на http://www./
Рисунок 1
5. Результаты работы системы
Проведено тестирование программы, подтверждающее правильность её работы. Ниже приведены результаты работы.
Рисунок 2 — запуск сервера
Рисунок 3 — сервер готов к работе
Рисунок 4 — подключение к серверу
Рисунок 5 — клиент получил данные
Рисунок 6
Рисунок 7 — работа с несколькими клиентами
Заключение
Разработано клиент-серверное приложение для передачи данных. Программа написана на языке С++ в среде программирования MS Visual Studio. Тестирование показало правильность работы приложения. Разработка и тестирование производились в ОС Windows XP на ПК с процессором Athlon.
Список использованной литературы
MSDN Library. Copyright 1995-2000 Microsoft Corporation.
Зинкин С.А. Курс лекций по курсу «Сети ЭВМ и телекоммуникации»
Компьютерные сети. Принципы, технологии, протоколы / В.Г. Олифер, Н.А. Олифер.-СПб.: Питер, 2002.
Сети ЭВМ: протоколы, стандарты, интерфейсы / Ю. Блэк; перев. с англ. — М.: Мир, 1990.
А. Мешков, Ю. Тихомиров «Visual C++ и MFC» — 2 издание, «BHV» — Санкт-Петербург, 1999г.