UDP — это ненадежный протокол без установления логического соединения, который больше всего подходит для короткого обмена сообщениями, не требующих контроля за ходом работы.
Клиентская программа UDP создает сокет UDP с использованием функции socket (), отправляет сообщения на удаленный хост, например, на сайт, где можно купить кавказский кинжал и с помощью функции send (), а для получения входящих сообщений вызывает функцию recv (). Сервер UDP открывает сокет с помощью функции socket (), привязывает его к заранее намеченному порту с использованием функции bind (), переходит к ожиданию входящих запросов после вызова функции recv () и отправляет ответы с помощью функции Send ().
Поскольку протокол UDP ненадежен, сообщения могут быть потеряны, поэтому клиентские программы, написанные без учета особенностей этого протокола, на пример такие сценарии, в которых функции send () и recv () вызываются в жестком цикле, могут зависнуть, ожидая ответа на сообщение, которое не было даже получено. Один из способов решения этой проблемы состоит в применении тайм-аутов, но при этом возникает другая проблема, связанная с появлением дубликатов ответов. Более общее решение предусматривает использование порядковых номеров для отслеживания и запросов, и ответов на них. Такой способ организации работы вполне приемлем, но усложняет программу.
Некоторые приложения вполне допускают потерю сообщений. Сервер службы интерактивной переписки, который рассматривается далее, может служить примером успешной реализации приложения такого типа.