Моделирование и реализация программного обеспечения
Разработка клиент-серверного приложения на основе TCP\IP соединения. Организация работы удаленного генератора псевдослучайных последовательностей. Описание основных функциональных модулей. Интерфейс пользователя, сетевое взаимодействие и алгоритм.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.10.2013 |
Размер файла | 223,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Оглавление
ВВЕДЕНИЕ
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
ОСНОВНАЯ ЧАСТЬ
1. Постановка задачи
2. Моделирование и реализация ПО
2.1 Архитектура ПО
2.2 Описание основных функциональных модулей
2.2.1 Интерфейс пользователя
2.2.2 Прикладной компонент
2.2.3 Организация сетевого взаимодействия
2.3 Реализация ПО
3. Руководство пользователя
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Когда-то компьютеры были очень громоздкими, и их было очень мало, а на один большой компьютер приходилось много пользователей с еще большим числом очень маленьких задач, вопрос о перенесении программ и данных с одного компьютера на другой не играл какой-либо заметной роли.
Однако по мере совершенствования компьютеров, увеличения их числа, развития и усложнения средств программного обеспечения, в том числе и прикладного, увеличения объемов баз данных возникла насущная необходимость в соединении компьютеров между собой. Такое связывание компьютеров, позволяющее объединить их ресурсы - процессоры, память (внутреннюю и внешнюю, включая жесткие диски, разнообразные внешние устройства - принтеры, факс-аппараты, модемы и др.), каналы связи, и представляет собой вычислительную сеть, в которой каждый компьютер может передать другому компьютеру, подключенному к сети, любой набор данных.
Таким образом, вычислительная сеть, объединяющая ресурсы нескольких компьютеров, позволяет каждому из них использовать всю совокупность этих ресурсов.
Вычислительные сети строятся на основе архитектуры "клиент-сервер", которая предполагает выделение в сети так называемых "серверов" и "клиентов". К клиентам относятся рабочие станции (компьютеры) сети, которые не имеют непосредственных контактов друг с другом и могут общаться между собой только через сервер: следовательно, одна станция не может использовать файл, находящийся на другой станции: для этого файл должен находиться на файл-сервере. Серверы управляют подключенными к ним общими разделяемыми ресурсами сети. В качестве сервера может быть использован либо обычный персональный компьютер, или же это может быть специализированное устройство.
На протяжении последних десяти лет специалисты по вычислительной технике работают над усовершенствованием приложений клиент-сервер. В результате были построены приложения, поддерживающие совместную работу множества пользователей с единственным источником данных в сети.
Архитектура клиент-сервер стала общераспространенной при общении с компьютером или с системой на его основе. Любой человек, подключающийся к диалоговой информационной системе с помощью телефонной связи, использует архитектуру клиент-сервер. Пользуясь автоматическим кассовым аппаратом, считывая штриховые коды своих покупок на проверочном устройстве магазина или расплачиваясь за них с помощью кредитной карточки, идет взаимодействие с компьютерной системой клиент-сервер.
В ходе выполнения курсового проекта необходимо изучить архитектуру клиент-сервер, организацию взаимодействия между клиентом и сервером и разработать программное обеспечение, представляющее собой удаленный генератор псевдослучайных последовательностей.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Согласно онлайновому словарю компьютерных терминов, клиент-сервер - это вид распределенной системы, в которой есть сервер, выполняющий запросы клиента, причем сервер и клиент общаются между собой с использованием того или иного протокола.
Под клиентом понимается программа, использующая ресурсы, а под сервером (по английски - слуга) программа, обслуживающая запросы клиентов на получение ресурсов определенного вида. Столь широкое определение включает в себя практически любую программную технологию, в которой участвуют больше одной программы, функции между которыми распределены асимметрично. Соответственно, говорят о технологии КС применителько к операционным системам, локальным и глобальным сетям и т. д.
Такое широкое определение рождает некоторую путаницу. Так, файл-серверная система тоже использует технологию клиент-сервер, однако с точки зрения архитектуры прикладных программ важным является то, какого рода ресурсы сервер предоставляет клиентам.
Понятие архитектуры клиент-сервер в системах управления предприятием связано с делением любой прикладной программы на три основных компонента или слоя. Этими тремя компонентами являются:
компонент представления (визуализации) данных;
компонент прикладной логики;
компонент управления базой данных.
Действительно, любая программа, компьютеризирующая выполнение той или иной прикладной задачи, должна обмениваться информацией с пользователем, осуществлять собственно обработку этой информации в рамках автоматизации того или иного бизнес-процесса, и, наконец, хранить данные используемые в программе, на том или ином постоянном носителе.Для локальных приложений, полностью работающих на ПЭВМ (например, Word или Excel), все эти компоненты собраны вместе и не могут быть распределены между различными компьютеры. Такая программа является монолитной и использует для выполнения ресурсы только того компьютера, на котором выполняется.
В файл-серверных приложениях часть компоненты хранения переносится на файловый сервер, однако, все манипуляции со структурами данных выполняются на клиентской машине, и код пользовательской программы тоже работает только на ней.Критерием, позволяющим отнести прикладную программы к архитектуре клиент-сервер является то, что хотя бы один из трех ее компонентов полностью выполняется на другом компьютере, и взаимодействие между компонентами на разных компьютерах осуществляется через ту или иную сетевую среду посредством передачи запросов на получение того или иного ресурса.
Различие между сервером и клиентом существенно только тогда, когда клиент пытается подключиться к серверу. Как только они соединятся, происходит процесс двухстороннего общения и не важно, что один является сервером, а другой - клиентом.
Итак, работа сервера - слушать соединение, и это выполняется с помощью специального создаваемого серверного объекта (сокета), который равен: сокет = IP + номер_порта. Работа клиента - попытаться создать соединение с сервером, что выполняется с помощью специального клиентского объекта (сокета). Как только соединение установлено, соединение превращается в потоковый объект ввода/вывода, и с этого момента можно рассматривать соединение как файл, который Вы можете читать, и в который Вы можете записывать данные. Единственная особенность, файл может обладать определенным интеллектом и обрабатывать передаваемые Вами команды.
Сокет(гнездо, разъем) (сокет=IP+ПОРТ) - это программная абстракция, используемая для представления “терминалов” соединений между двумя машинами. Для такого соединения, существует сокет на каждой машине, и можно представить себе виртуальный “кабель” соединяющий две машины, каждый конец которого вставлен в сокет.
Как известно в операционной системе Windows связь между разными процессами производится при помощи сокетов (Sockets). Соединяя вместе два сокета, можно передавать данные между разными процессами (локальными и удаленными). Реализация сокетов обеспечивает инкапсуляцию протоколов сетевого и транспортного уровней. Интерфейс , используемый при этом взаимодействии, называется Sockets API. Он представлен библиотекой WinSock и java.net.*.
ОСНОВНАЯ ЧАСТЬ
1. Постановка задачи
Разработать клиент серверное-приложение на основе TCP\IP соединения.
Организовать работу удаленного генератора псевдослучайных последовательностей. Функции в программе: одно целое число в диапазоне, массив чисел в диапазоне.
После подключения к серверу клиента у пользователя будет возможность работать с псевдослучайными последовательностями воспользовавшись при этом русскоязычным удобным меню. Пользователь сможет воспользоваться следующими функциями, которые предоставляет сервер.Выбор диапазона чисел, вывод массива чисел либо одного числа. После выбора пользователем методов вывода значений, клиент отправляет информацию на сервер. Там она обрабатывается и возвращается обратно уже готовым результатом.
После подключения клиента к серверу,пользователь указывает диапазон значений и их количество и посылает серверу запросы псевдослучайных последовательностей. Сервер принимает значения, обрабатывает и отправляет обратно готовый результат.
Работа была выполнена на языке программирования JAVA в среде разработки Eclipse.
В работе используются библиотека java.net.*; разработанная компанией Sun, которая упрощает разработку по технологии клиент - сервер.
2. Моделирование и реализация ПО
2.1 Архитектура ПО
Приложение реализовано по технологии клиент-сервер с использованием сокетов Windows, соответственно разрабатываются приложения: клиента и сервера. Приложение «Сервер» запускается в одном экземпляре и выполняет прослушивание заданного порта на предмет подключения клиента. После запроса на подключение сервер устанавливает соединение с клиентом и обрабатывает его запросы. Приложение «Клиент» может быть запущено в нескольких экземплярах.Клиенты подключаются к серверу и посылают ему запросы псевдослучайных последовательностей. Принятые от сервера последовательности отображаются в главном окне. Схема работы программного обеспечения представлена на рисунке 1.
Запрос числа
Рис.1
2.2 Описание основных функциональных модулей
Функциональный модуль «Клиент».
Модуль предоставляет текстовый интерфейс для взаимодействия с пользователем. Позволяет выбрать порт сервера, к которому необходимо подключаться для запроса псевдослучайных последовательностей. Также в главном окне модуля есть возможность выбрать тип запроса: одно число или массив чисел, границы для случайных чисел и их количество.
Функциональный модуль «Сервер».
Модуль отвечает за установление соединения с каждым новым клиентом. После соединения с клиентом модуль принимает запрос от клиента, после чего он выполняет запрошенную функцию (генерацию одного или массива псевдослучайных чисел) и возвращает клиенту полученные числа.
2.2.1 Интерфейс пользователя
Для взаимодействия с пользователем в приложении используется оконный интерфейс. В текстовом, консольном режиме.
Главное меню приложения клиента на рисунке 2.
Рис.2
Нужное меню выбирает от 1 до 4. Номер функции отправляется серверу, он обрабатывает ее и высылает результат клиенту.
2.2.2 Прикладной компонент
В данном программном обеспечении прикладной функцией является генерация псевдослучайной последовательности чисел. Эта задача реализована в рамках сервера. Сервер в ответ на запрос клиента формирует последовательность чисел заданной длины, используя функцию java.util.Random() для генерации каждого из чисел. Сгенерированное функцией псевдослучайное число приводится затем к заданному диапазону.
2.2.3. Организация сетевого взаимодействия
Сетевое взаимодействие происходит посредством передачи и приема данных через сокеты, связывающие клиента и сервера. После установления соединения с сервером клиент по запросу пользователя передает запрос последовательности чисел. Формат запроса приведен ниже:
Ввод последовательности ->запись в переменные на сервере.
Выбор нужного действия -> передача нужной функции на сервер ->ответ от сервера.
2.3 Реализация ПО
приложение программный модуль сетевой
Алгоритм программы клиента рисунок 4.
Рисунок 4
Алгоритм программы сервера рисунок 5.
Рисунок 5
Работа с сокетами представлена классами ServerSocket. Класс, используемый сервером, чтобы “слушать” входящие соединения и Socket- используемый клиентом для инициирования соединения. Как только клиент создает соединение по сокету, ServerSocket возвращает ему с помощью метода accept() соответствующий объект Socket на сервере, по которому будет происходить связь со стороны сервера. Начиная с этого момента, появляется соединение Socket к Socket, и можно считать эти соединения одинаковыми, т.к. они действительно одинаковые.
3. Руководство пользователя
Для удобства пользователю предоставляется русскоязычное меню. Нужно выбрать нужный вариант из списка и следовать дальнейшему меню.
Вводить параметры для запроса последовательности псевдослучайных чисел и нажимать кнопку «Enter». В окне должны отображаться получаемые от сервера псевдослучайные числа.
Заключение
В ходе выполнения курсовой работы были созданы приложения клиента и сервера, демонстрирующие использование технологии «клиент-сервер» на примере удаленного генератора псевдослучайных последовательностей.
Программа написана на языке Java в среде программированияEclipse. Тестирование показало правильность работы приложения. Разработка и тестирование производились в ОС Windows 7.
Программа представляет собой удобный пользовательский интерфейс, интуитивно понятный для любого пользователя, программе не требуется установка.
Список использованных источников
1. Шилдт, Герберт. Полный справочник поJava, 7-е издание.: Пер. с аннгл. - М.: Издательский дом «Вильямс», 2012.
3. Камалян А.К., Кулев С.А., Назаренко К.Н. и др. Компьютерные сети и средства защиты информации: Учебное пособие /Камалян А.К., Кулев С.А., Назаренко К.Н. и др. - Воронеж: ВГАУ, 2003.
5. Б. Страуструп. «Язык программирования java Специальное издание.», 2009 г.
6. Компьютерные сети: Учебный курсJDK7 - М.: Издательский отдел «Русская редакция», 1999.
Приложение
Сервер
import java.io.*;
import java.net.*;
public class Server
{
privateint min;
privateint max;
privateint mas[];
privateintgenerateNumber;
public static ServerSocketsSocket = null;
public static Socket cAccepted= null;
public static ObjectInputStream Input = null;
public static ObjectOutputStream Output = null;
publicintgetIndexMas(int index)
{
return mas[index];
}
public void setMin(int min)
{
this.min = min;
}
public void setMax(int max)
{
this.max = max;
}
publicintgetGenerateNumber()
{
returngenerateNumber;
}
publicvoidgenerateNumber()
// Функция для генерации случайной последовательности в заданном диапазоне
{
generateNumber = (int)((double)Math.random() / 1 * (max+1 - min) + min);
}
publicvoidgenerateNumberMas(intsize)
// Функция создающая массив определенной длинны и инициализирующая его значения в заданном диапазоне
{
mas = new int[size];
for(inti = 0; i<mas.length; i++)
mas[i] = (int)((double)Math.random() / 1 * (max+1 - min) + min);
}
public static void main(String[] arg) throws IOException
{
Server obj = new Server();
try{
System.out.println("Старт");
sSocket = new ServerSocket(1719);
// Создание сокета сервера для заданного порта
cAccepted = sSocket.accept();
// Выполнение метода, который обеспечивает подключение сервера к клиенту
System.out.println("Клиент подключился\n\n");
Input = new ObjectInputStream(cAccepted.getInputStream());
// Создаемпотокввода
Output = new ObjectOutputStream(cAccepted.getOutputStream());
// Создаемпотоквывода
while(true)
{
int c = (Integer)Input.readObject();
switch(c)
{
case 1 :
{
// Принимаем от пользователя минимальный и максимальный диапазоны
obj.setMin((Integer)Input.readObject());
obj.setMax((Integer)Input.readObject());
break;
}
case 2 :
{
// Генерируем число в заданном диапазоне
obj.generateNumber();
Output.writeObject(obj.getGenerateNumber());
break;
}
case 3 :
{
// Генерируем и отправляем массив
int size = (Integer)Input.readObject();
obj.generateNumberMas(size);
for(inti = 0; i< size; i++)
{
Output.writeObject(obj.getIndexMas(i));
}
break;
}
case 4 :
{
Input.close(); // Закрываетсяпотокввода
Output.close(); // Закрывается поток вывода
cAccepted.close(); // Закрывается сокет
sSocket.close(); // Происходит отключение сервера от клиента
System.out.println("Клиент отключился");
return;
}
}
}
} catch(Exception e)
{
}
finally{
try
{
Input.close(); // Закрывается поток ввода
Output.close(); // Закрывается поток вывода
cAccepted.close(); // Закрывается сокет
sSocket.close(); // Происходит отключение сервера от клиента
} catch(Exception e) {
e.printStackTrace(); // Вызывается метод исключения е
}
}
}
}
Клиент:
import java.io.*;
import java.net.*;
importjava.util.*; // Пакет для работы с сокетами
public class Client
{
private static Scanner sc = new Scanner(System.in);
// sc - объект для считывания с клавиатуры
privatestaticSocketcSocket;
// Сокет через которыйсоединяемся с сервером
privateintgenerateNumber;
public void setGenerateNumber(intgenerateNumber)
{
this.generateNumber = generateNumber;
}
publicintgetGenerateNumber()
{
returngenerateNumber;
}
public static void main(String[] arg)
{
Client obj = new Client();
try
{
System.out.println("Выполняю соединение с сервером");
cSocket = new Socket("127.0.0.1",1719);
System.out.println("Установленосоединение");
ObjectOutputStream c =
newObjectOutputStream(cSocket.getOutputStream());
// Созданиепотокавывода
ObjectInputStream s =
newObjectInputStream(cSocket.getInputStream());
// Созданиепотокаввода
int da;
do
{
do
{
System.out.println("\nВведитедиапазонзначений [1]");
System.out.println("Сгенерировать число в заданном диапазоне [2]");
System.out.println("Сгенерировать массив [3]");
System.out.println("Отсоедениться: [4]");
System.out.print("Ввод: ");
da = sc.nextInt();
}while( da>4 || da<1 );
c.writeObject(da);
switch(da)
{
case 1 :
System.out.print("\nВведитеминимальное: ");
intmin = sc.nextInt();
c.writeObject(min);
// Отправляем сервер минимальное число из диапазона
System.out.print("Введите максимальное: ");
intmax = sc.nextInt();
c.writeObject(max);
// Отправляем сервер максимальное число из диапазона
break;
case 2 :
obj.setGenerateNumber((Integer)s.readObject());
// Принимаем от сервера сгенерированное число
System.out.println("Ответ от сервера: "+obj.getGenerateNumber()); // Выводим число на экран
break;
case 3 :
System.out.print("Введите размерность массива: ");
intsize = sc.nextInt();
c.writeObject(size);
// Отправляем серверу размер массива, который он должен создать, а потом заполнить случайными числами
int mas[] = new int[size];
System.out.println("Ответ от сервера, массив: ");
for(int i = 0; i <size; i++)
// Принимаем от севера по одному символу из массива.
{
mas[i] = (Integer)s.readObject();
System.out.print(mas[i]+" ");
}
System.out.println();
break;
case 4:
{
c.close(); // Закрывается поток ввода
c.close(); // Закрывается поток вывода
cSocket.close(); // Закрываем сокет
return;
}
default : break;
}
}while(true);
}
catch(Exception e){
e.printStackTrace();
}
}
}
Размещено на Allbest.ru
Подобные документы
Предметная область, цель создания и группы пользователей информационно-программного изделия. Сетевая организация распределения приложения в архитектуре клиент-сервер. Интерфейс пользователя. Реализация транзакций. Защита от несанкционированного доступа.
курсовая работа [1,8 M], добавлен 15.01.2013Разработка конфигурации службы. Исследование вычислительной эффективности алгоритма оптимизации. Программная реализация клиент-серверного приложения. Алгоритм решения непрерывной задачи загрузки рюкзака. Подключение веб-сервиса к клиентскому приложению.
курсовая работа [1,4 M], добавлен 21.01.2017Разработка системы, базирующейся на протоколе LIMone, для обмена мгновенными сообщениями и пересылки файлов в процессе деловой переписки. Реализация системы в виде клиент-серверного приложения. Расчет экономических показателей программного продукта.
дипломная работа [4,7 M], добавлен 22.08.2016Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.
курсовая работа [191,5 K], добавлен 07.01.2015Архитектура клиент-сервер на основе сокетов Windows. Описание утилиты Ipconfig. Конфигурирование стека TCP/IP. Реализация сокетов через классы NET. Структура библиотечных и пользовательских классов. Схема интерфейса пользователя и работы приложения.
курсовая работа [419,5 K], добавлен 13.12.2012Разработка компьютерной сети. Спецификация и расчет себестоимости спроектированной сети. Выбор инструментальных средств для реализации разрабатываемого клиент-серверного приложения. Описание логической структуры программного продукта, основные алгоритмы.
курсовая работа [942,1 K], добавлен 19.03.2012Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.
курсовая работа [2,6 M], добавлен 15.06.2013Анализ технологий, применяемых для построения современных ЛВС. Моделирование функционирования локальной вычислительной сети по технологии Fast Ethernet. Разработка клиент-серверного приложения и программного обеспечения, работающего в сети APMов.
курсовая работа [2,0 M], добавлен 23.11.2011Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".
дипломная работа [974,7 K], добавлен 08.06.2013Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.
курсовая работа [35,4 K], добавлен 12.05.2013