UDP

Протокол пользовательских датаграмм

Прототип:

#include <sys/socket.h>
#include <netinet/in.h>
int socket( AF_INET,
SOCK_DGRAM,
0 );

Описание:

UDP - это простой, но в то же время не самый надежный протокол датаграмм, который используется для поддержки абстракции SOCK_DGRAM для семейства интернет-протоколов. Сокеты UDP не требуют установления соединения и обычно используются с вызовами sendto() и recvfrom(), хотя также возможно использование вызова connect(), чтобы исправить место назначения для будущих пакетов (в этом случае можно использовать системные вызовы recv() или read() и send() или write()).

Форматы адресов UDP идентичны форматам, используемым в TCP. В частности, UDP предоставляет идентификатор порта в дополнение к обычному формату Интернет-адреса. Обратите внимание, что пространство портов UDP отделено от пространства портов TCP; то есть порт UDP не может быть «подключен» к порту TCP. Кроме того, могут быть отправлены широковещательные пакеты при условии, что более низкоуровневая сеть поддерживает их с использованием зарезервированного широковещательного адреса; этот адрес зависит от сетевого интерфейса.

Возможно использование параметров на транспортном уровне IP с UDP (см. протокол IP).

Возвращаемое значение:

Дескриптор сокета. Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

EADDRINUSE
Произведена попытка создать сокет с уже выделенным портом.
EADDRNOTAVAIL
Произведена попытка создать сокет с сетевым адресом, для которого не существует сетевого интерфейса.
EISCONN
Произведена попытка установить соединение с сокетом, в котором он уже есть, или отправить датаграмму с указанным адресом назначения при уже подключенном сокете.
ENOBUFS
В системе недостаточно памяти для хранения внутренней структуры данных.
ENOTCONN
Произведена попытка отправить датаграмму, однако адрес назначения не был указан и сокет не был подключен.

Тематические ссылки:

IP протокол

connect(), getsockopt(), read(), recv(), recvfrom(), send(), sendto(), socket(), write()

Основано на RFC 768




Предыдущий раздел: Описание API сетевой библиотеки