Разработка клиент серверного приложения


Содержание

Введение

1. Теоретическая часть

1.1 Понятие «Сетевое программное обеспечение»

1.2 Категории сетевого программного обеспечения

1.2.1 ПО управления сетевой платой

1.2.2 ПО выполняющее правила (или протокол) общения в сети

1.2.3 ПО сетевой операционной системы

2. Практическая часть

Заключение

Список литературы

Введение

Сфера информационных технологий является на сегодняшний день наиболее динамически развивающейся областью науки и техники, что приводит к расширению поля их применения в человеческой деятельности. Значительную часть современных информационных технологий составляют сетевые технологии и их более глобальное проявление — Internet-технологии.

Цель работы: является разработка клиент серверного приложения в среде программирования Borland Builder C++ с использование сокетов.

Практическая часть:

Задача, которая будет решаться в программной среде Borland Builder C++.

Для выполнения работы использовались следующие программы:

1. Среде программирования Borland Builder C++.

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 Понятие «Сетевое программное обеспечение»

Компьютерные сети, называемые также вычислительными сетями, или сетями передачи данных, можно определить следующим образом. С одной стороны, как частный случай распределенных вычислительных систем, в которых группа компьютеров согласованно выполняет набор взаимосвязанных задач, обмениваясь данными в автоматическом режиме, а с другой — как средство передачи информации на большие расстояния с использованием методов кодирования и мультиплексирования.

Таким образом, компьютерная сеть — это совокупность компьютеров, соединенных линиями связи. Линии связи образованы кабелями, сетевыми адаптерами и другими коммуникационными устройствами, называемыми сетевым оборудованием. Все сетевое оборудование работает под управлением системного и прикладного программного обеспечения.

Взаимодействие между компьютерами сети происходит путем передачи сообщений через сетевые адаптеры и каналы связи. С помощью этих сообщений один компьютер обычно запрашивает доступ к локальным ресурсам другого компьютера. Таким ресурсом может являться, например, вычислительная мощность компьютера в целом.

В качестве совместно используемых ресурсов часто выступают данные, хранящиеся на диске, а также разнообразные периферийные устройства: принтеры, модемы, факс-аппараты и т. д.

Разделение локальных ресурсов каждого компьютера между всеми пользователями сети — основная цель создания компьютерной сети. На тех компьютерах, ресурсы которых должны быть доступны всем пользователям сети, необходимо добавить модули, которые постоянно будут находиться в режиме ожидания запросов, поступающих по сети от других компьютеров. Обычно такие модули называются программными серверами (server), так как их главная задача — обслуживать (serve) запросы на доступ к ресурсам своего компьютера. На компьютерах, пользователи которых хотят получать доступ к удаленным ресурсам и передавать их по сети на нужный компьютер, также необходимо установить дополнительные модули. Такие модули обычно называют программными клиентами (client). Сетевые адаптеры и каналы связи решают в сети задачу передачи сообщения с запросами и ответами от одного компьютера к другому, основную же работу по организации совместного использования ресурсов выполняют клиентские и серверные части операционных систем.

Пара модулей «клиент-сервер» обеспечивает совместный доступ пользователей к определенному типу ресурсов. Термины «клиент» и «сервер» используются для обозначения не только программных модулей, но и компьютеров, подключенных к сети. Если компьютер предоставляет свои ресурсы другим компьютерам сети, то он называется сервером, а если он их потребляет — клиентом. Иногда один и тот же компьютер может выполнять роль как сервера, так и клиента.

В самом простом случае связь компьютеров может быть реализована с помощью тех же самых средств, которые используются для связи компьютера с периферийными устройствами. Для этого в компьютере предусмотрены интерфейсы, или порты, т. е. наборы проводов, соединяющих компьютер с устройствами, а также наборы правил обмена информацией по этим проводам. Для того чтобы компьютер мог работать в сети, его операционная система (ОС) должна быть дополнена клиентским и (или) серверным модулем, а также средствами передачи данных между компьютерами. В результате такого добавления ОС компьютера становится сетевой. Схема взаимодействия программных компонентов при связи двух компьютеров представлена на рис.1.

рис. 1

Развитие теории компьютерных сетей является логическим результатом эволюции двух важнейших научно-технических отраслей современной цивилизации — компьютерных и телекоммуникационных технологий.[1, с. 4-5]

1.2 Категории сетевого программного обеспечения

1.2.1 ПО управления сетевой платой

Первый компонент может состоять из одной или нескольких небольших программ. Он отвечает за наведение мостов между сетевой платой и стеком протокола.

1.2.2 ПО выполняющее правила (или протокол) общения в сети

ЛВС (локальные вычислительные сети) бывают двух основных типов: равноправные (или одноранговые) и с выделенным сервером. В равноправной локальной сети все узлы равноправны: любая РСТ(равноправная сеть) может выступать по отношению к другой как клиент или как сервер. В сети с выделенным сервером все клиенты общаются с центральным сервером.

Одноранговые сети обычно легко устанавливать, и для их ОС не требуется выделять особый компьютер. С другой стороны, эти сети обладают меньшими функциональными возможностями по сравнению с сетями на основе выделенного сервера. В частности, проблемы централизованной защиты ресурсов и данных в таких сетях часто не разрешимы, так как каждый пользователь сам контролирует доступ к своей системе. По мере роста размеров таких сетей они быстро становятся неуправляемыми.

Равноправные СОС( сетевые операционные системы) хороши для мелких сетей и идеальны в случае необходимости объединения лишь нескольких машин в целях коллективного применения специальных файлов и принтеров, когда не требуется централизованного администрирования. Но иногда доступ к некоторым ресурсам должен быть представлен лишь определенным пользователям и администратору требуется управлять такими ресурсами. Например, к определенному ресурсу должен быть организован централизованный доступ, в частности для организации «общего котла» модемов или принтеров. В этих случаях лучше обратиться к сети с выделенным сервером. В таких сетях один или несколько компьютеров организуют централизованный доступ к своим ресурсам. Все запросы от РСТ проходят через серверы. Компьютер, используемый в качестве сервера, должен быть как можно более мощным и надежным. [3, с.132]

ПО сервера обеспечивает централизованное администрирование и защиту и управляет доступом к ресурсам при помощи реконфигурируемых бюджетов пользователей. Администратор сети контролирует эти бюджеты и определяет, что должен видеть и делать пользователь, зарегистрированный в сети. Локальные сети с выделенным сервером обычно сложнее в установке по сравнению с одноранговыми, но они мощнее, функционально многообразнее и поддерживают крупные сетевые системы.

Наиболее популярным сетевым ПО с выделенным сервером является ОС Novell NetWare, используемая, по некоторым оценкам, в 70% локальных сетей. К числу других широко известных СОС этого класса относятся Banyan Vines, IBM LAN Server для OC/2, DEC Pathworks для VAX и Windows NT, а также Microsoft Windows NT Server.

1.2.3 ПО сетевой операционной системы

Сетевые операционные системы помогают осуществлять основные работы, проводимые в сети:

· файловая поддержка (создание, поиск файлов);

· коммуникации (взаимообмен данными);

· услуги поддержки оборудования.

Сетевые операционные системы могут базироваться на операционных системах MS DOS, OS/2, Unix, Macintosh, Windows или на своих собственных операционных системах. Но вне зависимости от операционной системы, на которой базируется сетевая операционная система, они предоставляют средства обеспечения безопасности данных путем контроля прав доступа пользователей к рабочим программам, массивам данным и ресурсам сети.

Остальные компьютеры являются рабочими станциями, имеющими доступ к дискам файл-сервера и совместно используемым принтерам. С терминала каждой рабочей станции нельзя работать с дисками других рабочих станций. С одной стороны, это хорошо, так как пользователи изолированы друг от друга и не могут случайно повредить чужие данные, с другой стороны, для обмена данными пользователи вынуждены использовать диски файл-сервера, создавая для него дополнительную нагрузку.

Существуют, однако, специальные программы, работающие в сети с централизованным управлением и позволяющие передавать данные непосредственно от одной рабочей станции к другой, минуя файл-сервер, например NetLink. После ее запуска на двух рабочих станциях можно передавать файлы с диска одной станции на диск другой, аналогично тому, как копируются файлы из одного каталога в другой при помощи программы Norton Commander. На рабочих станциях должно быть установлено специальное программное обеспечение, часто называемое сетевой оболочкой. Это обеспечение работает в среде той ОС, которая используется на данной рабочей станции, — DOS, Windows, OS/2 и т. д.

Файл-серверы могут быть выделенными или невыделенными

Существуют различные сетевые операционные ситемы, ориентированные на сети с централизованным управлением. Самые известные из них — Windows NT, Novell NetWare, Microsoft Lan Manager (на базе OS/2), a также выполненная на базе UNIX System V сетевая OS VINES.

Одноранговые сети не содержат в своем составе выделенных серверов. Такой подход облегчает совместную работу групп пользователей, но в целом производительность сети может понизиться.

Одно из достоинств одноранговых сетей — простота обслуживания.

Наиболее распространены такие одноранговые сети, как Artisoft LANtastic, LANsmart компании D-Link Systems, Invisible Software NET-30 и Web NOS компании Webcorp.

Сетевая операционная система необходима для управления потоками сообщений между рабочими станциями и серверами. Она может позволить любой рабочей станции работать с разделяемым сетевым диском или принтером, которые физически не подключены к этой станции.

Компоненты сетевой операционной системы на каждой рабочей станции и файловом сервере взаимодействуют друг с другом в рамках соглашений, называемых протоколом. Одним из общих протоколов является протокол фирмы IBM NetBIOS (Network Basic Input Output System —

Сетевая операционная система ввода-вывода). Другим распространенным протоколом является IPX {Internet-work Packet Exchange — Межсетевой обмен пакетами) фирмы Novell.

Операционная система NetWare

ОС NetWare фирмы Novell. Novell была одной из первых компаний, которые начали создавать ЛВС. .

В среде NetWare способно работать большее количество приложений, чем в любой другой ЛВС. ОС NetWare способна поддерживать рабочие станции, управляемые DOS, DOS и Windows, OS/2, UNIX, Windows NT, Mac System 7 и другими ОС. ЛВС NetWare может работать с большим количеством различных типов сетевых адаптеров, чем любая другая операционная система. Для достижения поставленных целей вы можете выбрать аппаратные средства от множества разных поставщиков. С NetWare можно использовать Arcnet, Ethernet, Token Ring или практически любой другой тип сетевого адаптера.

Операционные системы UNIX и LINUX

Операционные системы UNIX  и LINUX имеют большую известность как сетевые операционные системы, чем Novell NetWare. Они реже используются как ОС локальных сетей. Основное их назначение — обеспечение доступа к глобальным сетям и их сервисам.

Независимо от версии общими для UNIX чертами являются:

· многопользовательский режим со средствами защиты данных от несанкционированного доступа;

· реализация мультипрограммной обработки в режиме разделения времени, основанная на использовании алгоритмов вытесняющей многозадачности (preemptive multitasking);

· использование механизмов виртуальной памяти и свопинга для повышения уровня мультипрограммирования;

· унификация операций ввода-вывода на основе расширенного использования понятия «файл»;

· иерархическая файловая система, образующая единое дерево каталогов независимо от количества физических устройств, используемых для размещения файлов;

· переносимость системы за счет написания ее основной части на языке Си;

· разнообразные средства взаимодействия процессов, в том числе и через сеть;

кэширование диска для уменьшения среднего времени доступа к файлам.

ОС Linux имеет следующие достоинства:

· дает возможность бесплатно и легально иметь современную ОС для использования как на работе, так и дома;

· обладает высоким быстродействием;

· работает надежно, устойчиво, совершенно без зависаний;

· не подвержена вирусам;

· позволяет использовать полностью возможности современных ПК, снимая ограничения, присущие MS Windows по использованию памяти машины и ресурсов процессора(ов);

· эффективно управляет многозадачностью и приоритетами, фоновые задачи (длительный расчет, передача электронной почты по модему, форматирование дискеты и т. д.) не мешают интерактивной работе;

· позволяет легко интегрировать компьютер в локальные и глобальные сети, в том числе в Интернет; работает с сетями на базе Novell и MS Windows;

· позволяет выполнять представленные в формате загрузки прикладные программы других ОС — различных версий UNIX и MS Windows;

· обеспечивает использование огромного числа разнообразных программных пакетов, накопленных в мире UNIX и свободно распространяемых вместе с исходными текстами;

· предоставляет богатый набор инструментальных средств для разработки прикладных программ любой степени сложности, в том числе системы класса клиент—сервер, объектно-ориентированные, с многооконным текстовым и/или графическим интерфейсом, пригодных для работы как в Linux, так и в других ОС;

· дает пользователю и особенно разработчику замечательную учебную базу в виде богатой документации и исходных текстов всех компонент, включая ядро самой ОС;

· дает всем желающим попробовать свои силы в разработке, организовать общение и совместную работу через Интернет с любыми из разработчиков ОС Linux и сделать свой вклад, став соавтором системы.

Операционная система Windows NT

При разработке структуры Windows NT по аналогии с NetWare и UNIX была использована концепция микроядра. В соответствии с этой идеей ОС разделена на несколько подсистем, каждая из которых выполняет отдельный набор сервисных функций, например сервис памяти, сервис по созданию процессов или сервис по планированию процессов. Каждая подсистема выполняется в пользовательском режиме, осуществляя цикл проверки запроса от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (или микроядро), работая в привилегированном режиме, доставляет сообщение нужному серверу, затем сервер выполняет операцию, после этого ядро возвращает результаты клиенту с помощью другого сообщения.

В Windows NT реализована вытесняющая многозадачность, при которой операционная система не ждет, когда нить сама захочет освободить процессор, а принудительно снимает ее с выполнения — после того как та израсходовала отведенное ей время (квант) или если в очереди готовых появилась нить с более высоким приоритетом. При такой организации разделения процессора ни одна нить не займет процессор на очень долгое время.

Операционная система Windows 2000

Windows 2000, является потомком NT, обладает всеми ее достоинствами, а многие из ее ограничений при этом снимает. Windows 2000 — один из крупнейших программных продуктов, его код содержит около 30 млн. строк. В Windows 2000 появилась поддержка шины USB, РС-карт, шины AGP и DVD-устройств, а также технологии Plug and Play  , которой славится Windows 98, — автоматического распознавания и установки устройств.

Заметно расширены в Windows 2000 возможности работы с файловыми системами. Помимо используемых в Windows 9x файловых систем FAT16 и FAT32 (незащищенных), эта ОС работает с NTFS5 (NT File System 5), специально разработанной для Windows 2000 усовершенствованной версией файловых систем с добавлением шифрования и других новых возможностей. Она обеспечивает более эффективное использование дискового пространства и лучшую защиту информации.

Windows 2000 и ее предшественница Windows NT 4.0 не могли соперничать с мощными версиями UNIX. С появлением Datacenter Microsoft надеется выровнять положение, задействовав Windows на более крупных и мощных машинах, чем когда-либо до этого. Благодаря дополнительным возможностям повышается уровень масштабируемости, готовности и управляемости Windows 2000. Специальные требования к сертификации и техническому обслуживанию еще более выделяют эту операционную систему среди остальных серверов семейства Windows 2000.[2]

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

В ходе выполнения курсовой работы было разработано и запрограммировано в среде программирования Borland Builder C++ клиент серверное приложение с использованием сокетов.

Серверное приложение выполняет создание сервера и подключение клиентов к нему и обмена с ним сообщениями.

Рисунок 1.Создание сервера

Рисунок 2.Подключение Клиента

Рисунок 3.Обмен сообщения с клиентом

Листинг программы сервера

//—————————————————————————

#include <vcl. h>

#pragma hdrstop

#include <winsock. h>

#include <iostream>

#include <list>

#include <fstream. h>

#include <conio. h>

//—————————————————————————

#pragma argsused

using namespace std;

WSADATA wsadata;

SOCKET server_socket;

char buff[1024];

std::list<SOCKET> clients;

DWORD WINAPI ClientPool(LPVOID param)

{ SOCKET client_socket = (SOCKET)param;

while(true)

{

int bytes = recv(client_socket, &buff[0], sizeof(buff), 0);

printf(«client: %s
«, buff);

} return 0;/*

int bytes_recv;

SOCKET client_socket;

client_socket = (SOCKET)param;

while( (bytes_recv = recv(client_socket,&buff[0],sizeof(buff),0)) && bytes_recv!=SOCKET_ERROR)

{printf(«client: %s
«, buff);

std::list<SOCKET>::iterator it;

for(it = clients. begin(); it!=clients. end(); ++it)

send((*it), buff, bytes_recv, 0);} */

printf(«disconnect
«);

closesocket(client_socket);

return 0;}

int main()

{WSAStartup(MAKEWORD(2,2),&wsadata);

server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

SOCKADDR_IN server_addr;

server_addr. sin_family = AF_INET;

server_addr. sin_port = htons(6666);

server_addr. sin_addr. s_addr = INADDR_ANY;

bind(server_socket,(SOCKADDR*)&server_addr, sizeof(server_addr));

listen(server_socket, 10);

printf(«Server start
«);

while(true)

{

SOCKADDR_IN client_addr;

int len_client_addr = sizeof(client_addr);

SOCKET client = accept(server_socket, (struct sockaddr*)&client_addr, &len_client_addr);

printf(«New connection
«);

clients. push_back(client);

DWORD ThreadID;

HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ClientPool,

(void*)client, 0, &ThreadID);

while(1)

{

fgets(&buff[0],sizeof(buff),stdin);

send(client, buff, strlen(buff)-1,0);

}

}

return 0;

}

//—————————————————————————

Клиентское приложение выполняет подключение к серверу и обмен с ним сообщениями.

Рисунок 4.Подключение к серверу

Рисунок 5.Обмен сообщениями с клиентом

Листинг программы Клиент

//—————————————————————————

#include <vcl. h>

#pragma hdrstop

#include <winsock. h>

#include <iostream>

#include <list>

#include <stdlib. h>

#include <stdio. h>

#include <fstream. h>

#include <conio. h>

//—————————————————————————

#pragma argsused

WSADATA wsadata;

SOCKET client_socket;

char buff[1024];

DWORD WINAPI ServerPool(LPVOID param)

{

SOCKET server_socket = (SOCKET)param;

while(true)

{

int bytes = recv(server_socket, &buff[0], sizeof(buff), 0);

printf(«server: %s
«, buff);

}

return 0;

}

int main()

{

WSAStartup(MAKEWORD(2,2),&wsadata);

client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

sockaddr_in dest_addr;

dest_addr. sin_family = AF_INET;

dest_addr. sin_addr. s_addr = inet_addr( «127.0.0.1» );

dest_addr. sin_port = htons(6666);

if(connect(client_socket, (SOCKADDR*)&dest_addr, sizeof(dest_addr)))

printf(«Not connect
«);

else printf(«Connect
«);

DWORD ThreadID;

HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ServerPool,

(void*) client_socket, 0, &ThreadID);

while(1)

{

fgets(&buff[0],sizeof(buff),stdin);

send(client_socket, buff, strlen(buff)-1,0);

}

return 0;

}

//—————————————————————————

Заключение

клиент серверный программирование

В ходе выполнения данной курсовой работы изучены сокеты и их применение в программировании для передачи сообщений по сети. Так же были изучены компоненты для реализации сокетов в программных кода среды программирования Borland Builder C++.

Список литературы

1. Программное обеспечение компьютерных сетей: Учебное пособие / О. В. Исаченко. — М.: ИНФРА-М, 2012. — 117 с

2. http://professia. org/seti/251/2_5_1.%20HTML. html

3. Информатика в экономике: учебное пособие / под ред. Б. Е. Одинцова, А. Н. Романова. М.: Вузовский учебник, 2008. — 478 с

4. Компьютерная обучающая программа по дисциплине «Информатика» / А. Н. Романов, В. С. Торопцов, Д. Б. Григорович, Л. А. Галкина, А. Ю. Артемьев, Н. И. Лобова, К. Е. Михайлов, Г. А. Жуков, О. Е. Кричевская, С. В. Ясеновский, Л. А. Вдовенко, Б. Е. Одинцов, Г. А. Титоренко, Г. Д. Савичев, В. И. Гусев, С. Е. Смирнов, В. И. Суворова, Г. В. Федорова, Г. Б. Коняшина. М.: ВЗФЭИ, 2000. Дата обновления 24.11.2010. URL: http://repository. vzfei. ru

5. Информатика: методические указания по выполнению курсовой работы для студентов второго курса всех специальностей. М.: ВЗФЭИ, 2008. URL: http://repository. vzfei. ru.

Если вы думаете скопировать часть этой работы в свою, то имейте ввиду, что этим вы только снизите уникальность своей работы! Если вы хотите получить уникальную курсовую работу, то вам нужно либо написать её своими словами, либо заказать её написание опытному автору:
УЗНАТЬ СТОИМОСТЬ ИЛИ ЗАКАЗАТЬ »