
- •Сокеты для клиентов (часть 1)
- •Создание приложения с использованием UDP протокола
- •DatagramPacket
- •Основные методы в классе DatagramPacket
- •Класс DatagramSocket
- •Создание клиента UDP
- •Пример
- •Потоковые сокеты клиентов
- •Некоторые полезные методы класса Socket
- •Пример – чтение данных из TCP-сокета при получении точного времени
- •Запись данных в открытый сокет
Сокеты для клиентов (часть 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 и выше: