Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-1 Мережне програмування / ЛК / Лекция 4 Сетевое программирование - Сокеты для клиентов (1).pptx
Скачиваний:
119
Добавлен:
02.02.2021
Размер:
273.63 Кб
Скачать

Сокеты для клиентов (часть 1)

2017

Создание приложения с использованием UDP протокола

Сокеты UDP используют протокол UDP для взаимодействия приложений через сеть.

UDP является быстрым, без установления соединения и ненадежным протоколом.

Пакет java.net содержит следующие два класса, позволяющие применять сокеты UDP в приложении Java:

Класс DatagramPacket

Класс DatagramSocket

DatagramPacket

Объект DatagramPacket является контейнером данных, состоящим из датаграммных пакетов, которые посылаются или принимаются через сеть. Конструкторы для инициализации объектов DatagramPacket:

public DatagramPacket(byte[] buffer, int buffer_length)

Создает объект DatagramPacket, который принимает и сохраняет данные в массиве byte. Длина буфера массива byte задается вторым параметром buffer_length.

public DatagramPacket(byte[] buffer, int buffer_length, InetAddress address, int port)

Создает объект DatagramPacket, который посылает пакеты данных заданной длины. Пакеты данных посылаются на компьютер с заданным IP адресом и номером порта, передаваемыми как параметры.

Основные методы в классе DatagramPacket

Класс DatagramSocket

Cодержит функциональность для управления объектами DatagramPacket. Объекты DatagramPacket отправляют и принимают сохраненные данные, используя объект DatagramSocket.

Конструкторы для инициализации объекта DatagramSocket:

public DatagramSocket(): Создает объект DatagramSocket и связывает его с любым доступным портом на локальном компьютере.

public DatagramSocket(int port): Создает объект и связывает его с портом на локальном хосте, заданным в параметре.

public DatagramSocket(int port, InetAddress address): Создает объект и связывает его с портом заданного хоста.

Конструктор класса DatagramSocket вызывает исключительную ситуацию SocketException

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

Клиент UDP представляет собой приложение, которое использует протокол UDP для отправки запросов на сервер и получения ответов от серверного приложения.

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

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

для установки соединения с сервером.

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

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

Пример

Потоковые сокеты клиентов

Socket является базовым классом, поддерживающим протоколTCP. Класс Socket обеспечивает методы для потокового ввода/вывода, облегчает выполнение операций чтения и записи в сокет и является обязательным для программ, выполняющих сетевое взаимодействие.

Для создания объектов класса Socket используются следующие конструкторы, определенные в классе Socket:

public Socket (InetAddress IP_address, int port)

Создает объект Socket, который соединяется хостом, заданным с параметрами IP_address и port.

public Socket (String hostname, int port)

Создает объект Socket, который соединяется с хостом, заданным параметрами имя хоста или IP адрес и port, который сервер "слушает".

Некоторые полезные методы класса Socket

Пример – чтение данных из TCP-сокета при получении точного времени

с серверов NIST

Подключение по telnet к серверу времени.

Для того, чтобы подключиться к серверу из java программы откроем сокет:

Эта строка не просто создаст объект, а еще и произведет соединение по сети.

Если наступит таймаут или сервер не слушает 13 порт, конструктор выбросит

IOException.

В Java 6:

В Java 7 и выше:

Соседние файлы в папке ЛК