Документация по LinuxLinuxDoc.Ru 🔍

bind - функция создания имени сокета

НАЗВАНИЕ
bind - функция создания имени сокета

СИНТАКСИС
#include
#include

int bind(int sockfd, struct sockaddr *my_addr, socklen_t
addrlen);

ОПИСАНИЕ
bind присваивает сокету sockfd локальный адрес my_addr.
addrlen - это длина структуры my_addr. Традиционно эта
операция называется "присвоение сокету имени." Когда
сокет только что создан с помощью socket(2), он существует
в пространстве имён (семействе адресов), но не имеет
своего имени.

Обычно сокету типа SOCK_STREAM требуется присвоить
локальный адрес с помощью bind перед тем, как он сможет
участвовать в соединении (см. accept(2)).

Правила, которые используются при создании имён, отличны
друг от друга в разных семействах адресов. За более
подробной информацией обратитесь к соответствующему
разделу под номером 7 руководства. Информацию об AF_INET
читайте в ip(7), об AF_UNIX - в unix(7), об AF_APPLETALK -
в ddp(7), об AF_PACKET - в packet(7), об AF_X25 - в
x25(7), а об AF_NETLINK - в netlink(7).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращаемое значение становится
равным нулю. При ошибке оно равно -1, а переменной errno
присваивается соответствующее значение.

КОДЫ ОШИБОК
EBADF sockfd - неверный описатель.

EINVAL Сокет уже имеет определенный адрес. Эта ошибка в
будущем может не выводиться (смотрите
linux/unix/sock.c для уточнения деталей).

EACCES Адрес защищен, или пользователь не является
суперпользователем.

ENOTSOCK
Аргумент является описателем файла, а не сокета.

Следующие ошибки специфичны для сокетов домена UNIX
(AF_UNIX):

EINVAL (параметр addrlen неверен, или сокет не находится в
домене AF_UNIX);

EROFS (попытка создать сокет-файл в файловой системе
"только для чтения");

EFAULT ( my_addr находится за пределами доступного
адресного пространства);

ENAMETOOLONG
(адрес my_addr является слишком длинным);

ENOENT (файла не существует);

ENOMEM (недостаточно памяти);

ENOTDIR
(начальный компонент полного имени (пути) файла не
является названием каталога);

EACCES (запрещен поиск в одном из каталогов, указанных в
пути);

ELOOP (слишком много символьных ссылок составляют R
my_addr).

НАЙДЕННЫЕ ОШИБКИ
Не описаны опции, связанные с работой "прозрачного"
прокси.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD (функция bind впервые появилась в BSD 4.2).
SVr4 описывает дополнительные коды ошибок EADDRNOTAVAIL,
EADDRINUSE, и ENOSR; а также дополнительные коды ошибок в
домене Unix: EIO и EISDIR.

ЗАМЕЧАНИЯ
Третий аргумент вызова bind в действительности имеет тип
int (это справедливо для BSD 4.*, libc4 и libc5). В
существующем socklen_t присутствуют некоторые ошибки
POSIX. См. также accept(2).
Читать новости Linux в Telegram
Linux - bind - функция создания имени сокета
Мы в соцсетях ✉