Разработка программы клиент-сервер

Автор работы: Пользователь скрыл имя, 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

Работа состоит из  3 файла

Seti_kursovaya.doc

— 165.50 Кб (Скачать документ)

нажимать кнопку «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();

}

 

}

 

 


титульник.docx

— 10.93 Кб (Открыть документ, Скачать документ)

лист-задание 12.doc

— 38.50 Кб (Открыть документ, Скачать документ)

Информация о работе Разработка программы клиент-сервер