Преимущества протокола UDP заключаются в его простоте и возможности отправки широковещательных сообщений по нескольким адресам одновременно. Однако, поскольку протокол UDP является протоколом без установки подключения, он не гарантирует ни доставку датаграмм UDP, отправленных к удаленной конечной точке, ни сохранение порядка, в котором они были отправлены. Приложения, использующие UDP, должны быть готовы к обработке потерянных и следующих в неверном порядке датаграмм.
Чтобы отправить датаграмму, используя UDP, необходимо знать адрес сетевого устройства, на котором запущена нужная служба, а также номер порта UDP, который она использует для связи. IANA (Internet Assigned Numbers Authority) определяет номера портов для стандартных служб (см.
www.iana.org/assignments/port-numbers). Службы, не попавшие в список IANA, должны иметь номера портов в диапазоне от 1 024 до 65 535.
Для поддержки широковещательных сообщений UDP в сетях, построенных на основе протокола IP, используются специальные сетевые адреса. Далее в разделе в качестве примера рассматривается ситуация, когда семейство адресов протокола IP версии 4 используется для адресации в Интернет.
Адреса протокола IP версии 4 используют 32 бита для указания сетевого адреса. Для адресов класса C с сетевой маской 255.255.255.0 эти биты разделены на четыре октета. Выраженные в десятичном формате, эти четыре октета формируют понятную запись, представляющую собой четыре числа, разделенные точками, например: 192.168.100.2. Первые два октета (192.168 в этом примере) образуют адрес сети; третий октет (100) определяет номер подсети; последний октет (2) представляет собой идентификатор хоста.
Если все биты IP-адреса равны единице, т. е. запись адреса — 255.255.255.255, он представляет собой ограниченный широковещательный адрес. Отправка датаграмм UDP по этому адресу позволяет доставить сообщение всем хостам в этой широковещательной сети. Поскольку маршрутизаторы никогда не пересылают дальше сообщения, отправленные по этому адресу, его увидят только хосты, подключенные к данной сети.
Широковещательные сообщения могут быть направлены определенной части сети путем задания единицы для части адреса. Например, чтобы послать широковещательное сообщение всем хостам сети, IP-адреса которых начинаются с 192.168, все части адреса, соответствующие номеру подсети и хоста, задаются равными единице: 192.168.255.255. Чтобы ограничить область получения широковещательного сообщения одной подсетью, равной единице задается только та часть адреса, которая соответствует номеру хоста: 192.168.100.255.
Класс UdpClient позволяет посылать широковещательные сообщения по любому широковещательному сетевому адресу, но не позволяет прослушивать сеть на предмет наличия широковещательных сообщений. Для прослушивания на предмет наличия сетевых широковещательных сообщений следует использовать класс Socket.
Широковещательные сообщения работают тогда, когда все получатели находятся в единой сети или когда широковещательное сообщение адресовано многим клиентам. Если получатели представляют собой только небольшую часть сети, следует посылать сообщение в группу многоадресной рассылки, тогда его получат только те клиенты, которые присоединились к группе. IP-адреса в диапазоне от 224.0.0.2 до 244.255.255.255 зарезервированы для использования в качестве адресов групп хостов. Адрес IP 224.0.0.0 зарезервирован, а 224.0.0.1 соответствует постоянной группе, включающей все хосты.
В следующем примере класс UdpClient используется для получения широкополосных сообщений с датаграммами UDP, отправленных по адресу группы многоадресной рассылки 224.168.100.2 на порт 11000. Полученное сообщение-строка выводится на консоль.