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).