рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Часть 1. Создание приложения UDP

Часть 1. Создание приложения UDP - раздел Образование, Лабораторная Работа 2. Отправка И Прием Сообщений С Исп...

Лабораторная работа 2. Отправка и прием сообщений с использованием протоколов UDP и TCP/IP

Разработчик Дубаков А.А.

Часть 1. Создание приложения UDP

 

Постановка задачи

Необходимо разработать клиент/серверное приложение, в котором сервер может распространять сообщения всем клиентам, зарегистрированным в группе 233.0.0.1, порт 1502. Пользователь сервера должен иметь возможность ввода и отправки текстовых сообщений, а пользователь-клиент просматривает полученные сообщения.

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

1. Создать новый проект.

2. Реализовать класс сервера для ввода и отправки сообщений.

3. Реализовать класс клиента для получения и просмотра сообщений.

4. Протестировать приложение – запустить сервер и клиент, и отправить сообщение.

 

Подготовительный этап

Для реализации проекта необходимо установить и настроить среду разработки Ecplise (см. п. «Установка и настройка программного обеспечения»).

 

Создание нового проекта

1) Выберите пункт меню File/New/Project, в окне выбора типа проекта укажите other/Java Project и нажмите Next.

2) Укажите имя проекта Lab2 и нажмите Finish.

 

Создание класса Server

Класс Server предназначен для отсылки сообщений всем клиентам, зарегистрированным в группе 233.0.0.1. Создание класса Server включает в себя следующие основные задачи:

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

2. Создание объекта InetAddress, представляющего адрес сервера. Адреса для групповой (multicast) передачи сообщений выбираются из диапазона 224.0.0.0 - 239.255.255.255. В нашем приложении будет указан адрес 233.0.0.1.

3. Организация ввода строки сообщения с клавиатуры и создание объекта packet класса DatagramPacket, который хранит введенные данные и использует метод send() объекта класса DatagramSocket, для отсылки пакета всем клиентам группы.

 

1) Для создания класса сервера щелкните правой кнопкой мыши на каталог src в окне Package Explorer и выберите New/Class

2) В появившемся окне в качестве имени пакета (Package) укажите ru.tpu.javaEELabs.lab2, а в качестве имени класса (Name) задайте Server. Нажмите Finish.

Код класса Server приведен ниже:

 

package ru.tpu.javaEELabs.lab2;

 

import java.io.*;

import java.net.*;

 

public class Server {

 

private BufferedReader in = null;

private String str = null;

private byte[] buffer;

private DatagramPacket packet;

private InetAddress address;

private DatagramSocket socket;

 

public Server() throws IOException {

System.out.println("Sending messages");

 

// Создается объект DatagramSocket, чтобы

// принимать запросы клиента

socket = new DatagramSocket();

 

// Вызов метода transmit(), чтобы передавать сообщение всем

// клиентам, зарегистрированным в группе

transmit();

}

 

public void transmit() {

try {

// создается входной поток, чтобы принимать

// данные с консоли

in = new BufferedReader(new InputStreamReader(System.in));

while (true) {

System.out.println(

"Введите строку для передачи клиентам: ");

str = in.readLine();

buffer = str.getBytes();

address = InetAddress.getByName("233.0.0.1");

// Посылка пакета датаграмм на порт номер 1502

packet = new DatagramPacket(

buffer,

buffer.length,

address,

1502);

 

//Посылка сообщений всем клиентам в группе

socket.send(packet);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

// Закрытие потока и сокета

in.close();

socket.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

public static void main(String arg[]) throws Exception {

// Запуск сервера

new Server();

}

}

 

Создание класса Client

Класс Client позволяет клиенту присоединиться к группе 233.0.0.1 для получения сообщений от сервера. Создание класса Client включает в себя следующие основные задачи:

1. Создание сокета для просмотра групповых сообщений с помощью класса MulticastSocket. Сокет клиента выполняет задачу приема сообщения.

2. Создание объекта InetAddress, представляющего адрес сервера и присоединение к группе этого сервера с помощью метода сокета joinGroup.

3. Организация чтения пакетов датаграмм (DatagramPacket) из сокета и отображение полученных данных на экране.

 

1) Для создания класса клиента щелкните правой кнопкой мыши на пакет ru.tpu.javaEELabs.lab2 в каталоге src окна Package Explorer и выберите New/Class.

2) В появившемся окне в качестве имени класса (Name) задайте Client. Нажмите Finish.

Код класса Client приведен ниже:

 

package ru.tpu.javaEELabs.lab2;

 

import java.net.*;

 

public class Client {

private static InetAddress address;

private static byte[] buffer;

private static DatagramPacket packet;

private static String str;

private static MulticastSocket socket;

 

public static void main(String arg[]) throws Exception {

System.out.println("Ожидание сообщения от сервера");

try {

 

// Создание объекта MulticastSocket, чтобы получать

// данные от группы, используя номер порта 1502

socket = new MulticastSocket(1502);

 

address = InetAddress.getByName("233.0.0.1");

 

// Регистрация клиента в группе

socket.joinGroup(address);

while (true) {

buffer = new byte[256];

packet = new DatagramPacket(

buffer, buffer.length);

// Получение данных от сервера

socket.receive(packet);

str = new String(packet.getData());

System.out.println(

"Получено сообщение: " + str.trim());

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

// Удаление клиента из группы

socket.leaveGroup(address);

 

// Закрытие сокета

socket.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

 

Запуск и тестирование

Каждый из построенных классов Client и Server содержит метод main() и является, по сути, отдельным приложением, которое может быть запущено на отдельной машине, подключенной к сети, при этом по умолчанию область видимости передачи групповых сообщений (multicasting scope) ограничивается подсетью сервера. В нашем случае роль клиента и сервера будет выполнять один и тот же компьютер.

1) Щелкните правой кнопкой мыши на класс Client в окне Package Explorer и выберите команду Run As/Java Application. Проделайте то же самое с классом Server.

2) В результате будут запущены два приложения, переключаться между которыми можно с помощью кнопки-списка Display Selected Console представления Console:

 

 

3) Выберите консоль сервера, введите строку hello и нажмите Enter для подтверждения отправки.

 

 

4) Просмотрите консоль клиента и убедитесь, что клиент успешно приял сообщение.

 

 

5) Остановка приложения осуществляется с помощью кнопки Terminate представления Console.

 

Часть 2. Создание приложения TCP/IP

 

Постановка задачи

Необходимо разработать клиент/серверное приложение, в котором сервер слушает запросы клиентов на порт 1500 и отправляет объект-сообщение содержащий текущую дату/время сервера и строку сообщения. Пользователь-клиент должен иметь возможность просмотра полученного сообщения.

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

1. Создать класс DateMessage с двумя полями: дата и строка – для хранения и передачи сообщения клиенту.

2. Реализовать класс сервера для прослушивания соединений на порту 1500 и отправки сообщений. Задача класса сервера должна выполняться в отдельном потоке.

3. Реализовать класс клиента для получения и просмотра сообщений

4. Протестировать приложение – запустить сервер и клиент, и проверить передачу и получение сообщения.

 

Подготовительный этап

Для реализации проекта необходимо установить и настроить среду разработки Ecplise (см. п. «Установка и настройка программного обеспечения»).

 

Создание класса DateMessage

1) Создайте новый Java-класс DateMessage в пакете ru.tpu.javaEELabs.lab2.

2) Скопируйте следующее содержимое класса:

 

package ru.tpu.javaEELabs.lab2;

 

import java.io.Serializable;

import java.util.Date;

 

public class DateMessage implements Serializable {

 

private Date date;

private String message;

 

public DateMessage(Date date, String message) {

this.date = date;

this.message = message;

}

 

public Date getDate() {

return date;

}

 

public void setDate(Date date) {

this.date = date;

}

 

public String getMessage() {

return message;

}

 

public void setMessage(String message) {

this.message = message;

}

 

}

 

Создание класса ServerTCP

Создание класса ServerTCP включает в себя следующие основные задачи:

1. Создание серверного сокета с помощью класса ServerSocket.

2. Ожидание запроса от клиента с помощью метода accept() серверного сокета.

3. Формирование объекта-сообщения и отправка его с помощью выходного потока клиентского сокета.

 

1) Создайте новый Java-класс ServerTCP в пакете ru.tpu.javaEELabs.lab2.

Код класса Server приведен ниже:

 

package ru.tpu.javaEELabs.lab2;

 

import java.io.ObjectOutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Calendar;

 

/**

* Класс сервера (выполняется в отдельном процессе)

*/

public class ServerTCP extends Thread {

 

// Объявляется ссылка

// на объект - сокет сервера

ServerSocket serverSocket = null;

 

/**

* Конструктор по умолчанию

*/

public ServerTCP() {

try {

// Создается объект ServerSocket, который получает

// запросы клиента на порт 1500

serverSocket = new ServerSocket(1500);

System.out.println("Starting the server ");

// Запускаем процесс

start();

} catch (Exception e) {

e.printStackTrace();

}

}

 

/**

* Запуск процесса

*/

public void run() {

try {

while (true) {

// Ожидание запросов соединения от клиентов

Socket clientSocket = serverSocket.accept();

System.out.println("Connection accepted from " + clientSocket.getInetAddress().getHostAddress());

 

// Получение выходного потока,

// связанного с объектом Socket

ObjectOutputStream out =

new ObjectOutputStream(

clientSocket.getOutputStream());

 

// Создание объекта для передачи клиентам

DateMessage dateMessage = new DateMessage(

Calendar.getInstance().getTime(),

"Текущая дата/время на сервере");

// Запись объекта в выходной поток

out.writeObject(dateMessage);

out.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

 

public static void main(String args[]) {

// Запуск сервера

new ServerTCP();

}

 

}

 

Создание класса ClientTCP

Класс ClientTCP позволяет клиенту присоединиться к серверу, используя его IP-адрес (в нашем случае localhost) и получить от него сообщение. Создание класса ClientTCP включает в себя следующие основные задачи:

1. Создание сокета для доступа к серверу localhost на порт 1500.

2. Получение входного потока сокета.

3. Чтение объекта-сообщения из потока и отображение полученных данных на экране.

 

1) Создайте новый Java-класс ClientTCP в пакете ru.tpu.javaEELabs.lab2.

Код класса Client приведен ниже:

 

package ru.tpu.javaEELabs.lab2;

 

import java.io.ObjectInputStream;

import java.net.Socket;

 

public class ClientTCP {

 

public static void main(String args[]) {

try {

// Создается объект Socket

// для соединения с сервером

Socket clientSocket = new Socket("localhost", 1500);

 

// Получаем ссылку на поток, связанный с сокетом

ObjectInputStream in =

new ObjectInputStream(clientSocket.getInputStream());

 

// Извлекаем объект из входного потока

DateMessage dateMessage =

(DateMessage) in.readObject();

 

// Выводим полученные данные в консоль

System.out.println(dateMessage.getMessage());

System.out.println(dateMessage.getDate());

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

Запуск и тестирование

Щелкните правой кнопкой мыши на класс ServerTCP в окне Package Explorer и выберите команду Run As/Java Application. В консоли отображается сообщение Starting the server.

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

 

 

Выберите консоль сервера и просмотрите сообщение о приеме соединения от клиента:

 

 

Варианты заданий

1. Необходимо разработать клиент/серверное приложение, в котором сервер каждые 10 секунд распространяет некоторое текстовое сообщение, например, о погоде, всем промежуточным клиентам, зарегистрированным в группе 233.0.0.1, порт 1502 с помощью UDP. Текст сообщения хранится в текстовом файле на сервере. Промежуточный клиент фильтрует полученные сообщения и в случае изменения содержимого отображает его в консоли. Для конечного клиента промежуточный клиент выступает сервером. Конечный клиент присоединяется к промежуточному и получает тексты последних пяти отфильтрованных сообщений (с помощью протокола TCP/IP). Необходимо снабдить приложение конечного клиента графическим интерфейсом.

 

2. Разработать приложение для широковещательного общения пользователей (чат). Клиент отсылает сообщение серверу (с помощью протокола TCP/IP). Сервер накапливает порции сообщений и каждые 10 секунд распространяет очередную порцию сообщений всем клиентам, зарегистрированным в группе 233.0.0.1, порт 1502 с помощью UDP. Если за указанный период не поступило ни одного нового сообщения, то рассылка не производится. Клиент принимает сообщения и отображает их на экране. Клиентское приложение должно иметь удобный графический интерфейс для ввода новых и просмотра полученных сообщений.

 

– Конец работы –

Используемые теги: часть, Создание, ложения, UDP0.073

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Часть 1. Создание приложения UDP

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Создание фигур и изменение их геометрии в приложении MS Visio. Создание и разработка планировок в приложении MS Visio. Графический редактор Adobe Photoshop. Изучение панели инструментов редактора. Создание и обработка графических изображений.
Лабораторная работа Создание фигур и изменение их геометрии в приложении... ЦЕЛЬ РАБОТЫ приобретение навыков создания фигур средствами MS Visio...

Средства создания мультимедийных приложений
Для проигрывания файлов мультимедиа может потребоваться наличие некоторого оборудования и программного обеспечения. Так для воспроизведения звуков нужна звуковая карта. Для воспроизведения AVI в Windows 3.1 или WFW требуется установить ПО Microsoft Video. 4. Мультимедиа в Delphi 5. В…

Задание состоит из двух частей: Часть I и Часть II
К лабораторной работе... Читать всем Задание состоит из двух частей Часть I и Часть II Часть I одинаковая для всех выполнять всем вариантам Часть II четыре пункта заданий по...

Текстовый процессор Word. Работа с таблицами и диаграммами. Использование и создание графических объектов. Создание новых форм для ввода данных
Практическое занятие Текстовый процессор Word Работа с таблицами и диаграммами Использование и создание графических объектов Создание новых... Таблицы всегда были неотъемлемым атрибутом печатной научно технической документации Они используются для более...

Сравнительный анализ Маастрихтского договора о создании ЕС и договора о создании СНГ
Следует заметить, что не все страны к 90-м годам имели одинаковые возможности, отдельные государства характеризовались наличием оппозиционно… Итак, начнем рассмотрение данной темы прежде всего с истории принятия… В первую очередь обратим внимание на реформу Европейских Сообществ - ЕОУС, ЕЭС и Евроатома, где прежний отрыв…

Создание и запуск приложений на Java. Среда разработки Eclipse SDK
Создание и запуск приложений на Java Среда разработки Eclipse SDK... Цель работы научиться компилировать и запускать программы на Java с... Продолжительность работы часа...

Создание приложений для решения типовых задач аналитической геометрии
На сайте allrefs.net читайте: Создание приложений для решения типовых задач аналитической геометрии.

Существует ряд приложений, ориентированных на создание документов. Под документом в Windows принято понимать файл, который может содержать
Приложения Windows... Программы предназначенные для выполнения различных работ в WINDOWS принято называть приложениями WORD EXCEL и...

ЧАСТЬ III.ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ ОСНОВЫ СОЗДАНИЯ СИСТЕМЫ КОНТРОЛЛИНГА В ОРГАНИЗАЦИИ
Предпосылки стадии и темпы внедрения контроллинга на... Последовательность этапов проектирования процесса контроллинга в организации Организационная и эксплуатационная фазы...

Православие и современность. Электронная библиотека. Часть I Часть II
Диакон Андрей Кураев... Ответы молодым...

0.036
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам