Автор работы: Пользователь скрыл имя, 17 Октября 2013 в 13:29, курсовая работа
Когда-то компьютеры были очень громоздкими, и их было очень мало, а на один большой компьютер приходилось много пользователей с еще большим числом очень маленьких задач, вопрос о перенесении программ и данных с одного компьютера на другой не играл какой-либо заметной роли.
ВВЕДЕНИЕ 2
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
ОСНОВНАЯ ЧАСТЬ 6
1 Постановка задачи 6
2 Моделирование и реализация ПО 7
2.1 Архитектура ПО 7
2.2 Описание основных функциональных модулей 8
2.2.1 Интерфейс пользователя 9
2.2.2. Прикладной компонент 10
2.2.3. Организация сетевого взаимодействия 11
2.3. Реализация ПО 12
3 Руководство пользователя 14
ЗАКЛЮЧЕНИЕ 15
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 16
ПРИЛОЖЕНИЕ 17
нажимать кнопку «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(
// Функция создающая массив определенной длинны и инициализирующая его значения в заданном диапазоне
{
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.
// Создаемпотокввода
Output = new ObjectOutputStream(cAccepted.
// Создаемпотоквывода
while(true)
{
int c = (Integer)Input.readObject();
switch(c)
{
case 1 :
{
// Принимаем от пользователя минимальный и максимальный диапазоны
obj.setMin((Integer)Input.
obj.setMax((Integer)Input.
break;
}
case 2 :
{
// Генерируем число в заданном диапазоне
obj.generateNumber();
Output.writeObject(obj.
break;
}
case 3 :
{
// Генерируем и отправляем массив
int size = (Integer)Input.readObject();
obj.generateNumberMas(size);
for(inti = 0; i< size; i++)
{
Output.writeObject(obj.
}
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(
{
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.
// Созданиепотокавывода
ObjectInputStream s =
newObjectInputStream(cSocket.
// Созданиепотокаввода
int da;
do
{
do
{
System.out.println("\
System.out.println("
System.out.println("
System.out.println("
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((
// Принимаем от сервера сгенерированное число
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();
}
}
}