Естественно, сначала необходимо разобраться,
что такое UDP. Упрощая, User Datagram Protocol – это альтернатива TCP, когда информацию нужно слать быстро, много, и при этом допустимы потери и дублирование данных. Типичные примеры использования – потоковое видео и аудио, интернет-телефония, торренты.
В Java данные, которые планируется отправить клиентам по протоколу UDP, упаковываются в объект класса
DatagramPacket. В виде массива байтов их передают в конструктор.
Для отправки и получения информации используется
DatagramSocket. Он похож на
ServerSocket, который применяют для
создания TCP-сервера. Для приёма сообщений используется блокирующий метод
receive, для отправки –
send. Примечательно, что оба метода
принимают DatagramPacket параметром. В случае
receive его байтовый массив заполняется пришедшими данными.
Для реализации клиентской стороны используется тот же самый
DatagramSocket. Просто он создается несвязанным (unbound) – в его конструкторе не указывается порт. Адрес и порт,
на которые нужно отправить сообщение, устанавливаются через конструктор
DatagramPacket.
В
Java NIO доступна версия UDP-сокета в виде канала –
DatagramChannel.