Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-1 Мережне програмування / МПТКС Методичні вказівки до IDEA.doc
Скачиваний:
112
Добавлен:
02.02.2021
Размер:
2.72 Mб
Скачать

1.3 Описание лабораторной устанвки (програмного обеспечения)

Для успішного выполнения работы необходимо установить среду разработки IntelliJ IDEA

1.4 Порядок выполнения работы и методические указания для ее выполнения

1.4.1 Создать новий проект в IntelliJ IDEA.

Вибрать пункт меню Create New Project на экране приветствия. В противном случае, выберите пункт New Project в меню File. В результате откроется мастер создания проекта. В левой панели выберите Java . В правой части страницы, в поле Project name, введите название проекта: Socket. Создайте пакет с именем ua.nure.time.

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

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

1) Создать новий Java-клас DateMessage в пакете ua.nure.time.

2) Необходимо скопировать следующий текст :

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;

}

}

1.4.3 Реалізувати клас сервера для прослуховування з'єднань на порту 1500 і відправки повідомлень. Завдання класу сервера повинна виконуватися в окремому потоці.

Создание сервера UDP

Сервер UDP представляет собой сетевое приложение, использующее протокол UDP для обслуживания запросов клиентских приложений. Для создания сервера UDP используется объект DatagramSocket, который принимает объекты DatagramPacket от клиентов. Для создания сервера UDP необходимо выполнить следующие шаги:

• Создать сокет, используя объект DatagramSocket.

• Создать объект класса DatagramPacket и использовать метод receive() для получения сообщения клиента.

• Создать объект класса DatagramPacket и использовать метод send() для отправки сообщение клиенту.

• Запустить сервер, вызывая конструктор класса сервера UDP в методе main().

Код КЛАСУ Сервер наведено нижче:

package ua.nure.time;

import java.net.*;

import java.util.*;

public class DatagramServer

{

public static void main(String args[])

{

byte bKbdInput[] = new byte[256];

// Буфер для чтения команд

byte buf[] = new byte[512];

// Сокет сервера

DatagramSocket s;

// Рабочая строка

String str;

// Передаваемый пакет

DatagramPacket pout;

// Адрес узла, откуда пришел принятый пакет

InetAddress SrcAddress;

// Порт, откуда пришел принятый пакет

int SrcPort;

// Принимаемый пакет

DatagramPacket pinp;

try

{

// Выводим строку приглашения

System.out.println("Datagramm Socket Server Application");

}

catch(Exception ioe)

{

// При возникновении исключения выводим его описание

// на консоль

System.out.println(ioe.toString());

}

try

{

// Создаем сокет сервера

s = new DatagramSocket(1500);

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

pinp = new DatagramPacket(buf, 512);

// Принимаем пакет от клиента

s.receive(pinp);

// Получаем адрес узла, приславшего пакет

SrcAddress = pinp.getAddress();

// Получаем порт, на котором был передан пакет

SrcPort = pinp.getPort();

/////////////////////////////////////////

DateMessage dateMessage = new DateMessage(

Calendar.getInstance().getTime(),

"The current date / time on the server");

String mess = dateMessage.getDate().toString() + " The current date / time on the server" ;

bKbdInput = mess.getBytes("US-ASCII");

///////////////////////////////////////////////////////////////////////////////////

pout = new DatagramPacket(bKbdInput, bKbdInput.length,

SrcAddress, SrcPort);

// Посылаем пакет клиенту

s.send(pout);

// Закрываем сокет сервера

s.close();

}

catch(Exception ioe)

{

System.out.println(ioe.toString());

}

}

}

1.4.4 Реалізувати клас клієнту для отримання та перегляду повідомлень.

Создание клиента UDP

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

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

2. Создать объект класса DatagramPacket и использовать метод send() для отправки сообщения на сервер.

3. Создать объект класса DatagramPacket и использовать метод receive() для получения сообщений, отправленных сервером.

Следующий фрагмент кода можно использовать для создания объекта класса DatagramSocket для клиентского приложения:

package ua.nure.time;

import java.net.*;

public class DatagramClient

{

public static void main(String args[])

{

// Массив для строки

byte bKbdInput[] = new byte[512];

// Размер введенной строки

int length;

// Рабочая строка

String str;

// Передаваемый пакет

DatagramPacket pout;

// Сокет клиента

DatagramSocket s;

// Принимаемый пакет

DatagramPacket pinp;

try

{

// Выводим строку приглашения

System.out.println("Datagram Socket Client Application");

}

catch(Exception ioe)

{

// При возникновении исключения выводим его описание

// на консоль

System.out.println(ioe.toString());

}

try

{ // Получаем адрес локального узла

InetAddress OutAddress = InetAddress.getLocalHost();

// Создаем сокет с использованием любого

// свободного порта

s = new DatagramSocket();

// Создаем передаваемый пакет инициируюющий соеденение

pout = new DatagramPacket(bKbdInput, bKbdInput.length,

OutAddress, 1500);

s.send(pout);

//s.connect(OutAddress, 1500);

//////////////////////////////////////////

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

pinp = new DatagramPacket(bKbdInput, 512);

// Принимаем пакет от сервера

s.receive(pinp);

// Формируем строку из принятого блока

str = new String(bKbdInput, 0);

// Выводим строку команды на консоль

System.out.println( str );

/////////////////////////////////////////////////////////

// Закрываем сокет

s.close();

}

catch(Exception ioe)

{

System.out.println(ioe.toString());

}

}

}

1.5 Зміст звіту.

1. Титульний аркуш.

2. Назва та мета лабораторної роботи.

3. Лістинг програми .

4. Скріншот зі створенними класами та каталогами .

5. Скріншоти консолі з переданими та отриманими повідомленнями між клієнтом та сервером.

6. Висновки по роботі щодо отриманих навиків та особливостей створення клієнт-серверного додатку на Java.

7. Відповіді на всі контрольні питання.

1.6 Контрольні запитання .

1.Протокол UDP, призначення, рівень функціонування, для яких типів передачі використовується.

2. Який пакет містить класи для створення мережевих додатків UDP?

3. Який клас забезпечує функціональність для створення сокетів для клієнта?

4. Який клас забезпечує функціональність для створення сокетів для сервера?

ЛАБОРАТОРНА РОБОТА№ 3

Тема: ВЗАЄМОДІЯ З ВЕБ СЕРВЕРОМ ПО ПРОТОКОЛУ HTTP.

(однопотокова версія програми )

3.1 Мета роботи: навчитися створювати Java-програми для клієнтів, які здійснюють взаємодію з сервером по протоколу HTTP. Вивчення можливості бібліотеки ApacheHttpComponents. Використання фреймворка для автоматизації збирання проектів Maven для опису і завантаження бібліотек-залежностей проекту.