bind()

Назначить имя сокета

Прототип:

#include <sys/types.h>
#include <sys/socket.h>
int bind( int s,
const struct sockaddr *name,
socklen_t namelen );

Аргументы:

s
Связываемый дескриптор файла.
name
Указатель на структуру sockaddr, содержащую адрес, который следует связать с сокетом. Длина и формат сокета зависят от его адресного семейства.
namelen
Размер структуры sockaddr, на которую указывает name.

Библиотека:

libsocket

Описание:

Когда сокет создается при помощи socket(), он появлется в пространстве имен (адресном семействе), однако ему не присваивается имя. Функция bind() присваивает имя к данному безымянному сокету.


Note: Функция bind() присваивает локальный адрес. Используйте connect() для присвоения удаленного адреса.

Правила, используемые для привязки имен, различаются в зависимости от домена связи.


Note: Перед вызовом bind() для сокета AF_INET, установите поле af_family структуры sockaddr в значение AF_INET.

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

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Запрошенный адрес защищен, и у текущего пользователя недостаточно прав для доступа к нему.
EADDRINUSE
Указанный адрес уже используется.
EADDRNOTAVAIL
Указанный адрес недоступен на локальном компьютере.
EBADF
Некорректный дескриптор s.
EFAULT
Параметр name располагается в невалидной части адресного пространства пользователя.
EINVAL
Сокет уже привязан к адресу.
ENOTSOCK
Данный дескриптор файла не предназначен для сокета.

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

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

ICMP, IP, TCP, и UDP протоколы

connect(), getpeereid(), getsockname(), listen(), socket()




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