Документация Linux www.linuxdoc.ru

BIND(2)             Linux Programmer's Manual             BIND(2)



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

СИНТАКСИС
       #include <sys/types.h>
       #include <sys/socket.h>

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

СМ. ТАКЖЕ
       accept(2),  connect(2),  listen(2),  socket(2),   getsock-
       name(2), ip(7), socket(7)




Linux 2.2                   3 Oct 1998                    BIND(2)

Документация Linux www.linuxdoc.ru