ВУЗ:
Составители:
Рубрика:
49
6.5 Привязка адреса к сокету
После подготовки структуры
SOCKADDR
(записи в нее параметров сокета
- в частности, адреса) следует привязку адреса к сокету при помощи функции
bind:
int
bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen);
Параметр
sock
содержит дескриптор созданного ранее функцией
socket
со-
кета, в поле
addr
следует записать указатель на подготовленную структуру
SOCKADDR
, в поле
namelen
- размер этой структуры.
В случае ошибки функция
bind
возвращает значение
SOCKET_ERROR
,
дальнейший анализ причин ошибок следует выполнять при помощи функции
WSAGetLastError
, возможные коды ошибок перечислены ниже
Код ошибки Описание
WSANOTINITIALISED
Перед использование функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAEADDRINUSE
Указанный адрес уже используется
WSAEFAULT Значение параметра namelen меньше размера структуры
sockaddr
WSAINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEAFNOSUPPORT
Выбранный протокол не может работать с указанным семей-
ством адресов
WSAEINVAL
Сокет уже привязан к адресу
WSAENOBUFS
Установлено слишком много соединений
WSAENOTSOCK
Указанный в параметре дескриптор не является дескрипто-
ром сокета
Пример вызова функции
bind
показан ниже
if (bind(srv_socket, (LPSOCKADDR) &srv_address,
sizeof(srv_address)) == SOCKET_ERROR)
{
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции Bind", "Error", MB_OK);
return;
}
6.6 Создание канала связи
6.5 Привязка адреса к сокету
После подготовки структуры SOCKADDR (записи в нее параметров сокета
- в частности, адреса) следует привязку адреса к сокету при помощи функции
bind:
int
bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen);
Параметр sock содержит дескриптор созданного ранее функцией socket со-
кета, в поле addr следует записать указатель на подготовленную структуру
SOCKADDR, в поле namelen - размер этой структуры.
В случае ошибки функция bind возвращает значение SOCKET_ERROR,
дальнейший анализ причин ошибок следует выполнять при помощи функции
WSAGetLastError, возможные коды ошибок перечислены ниже
Код ошибки Описание
WSANOTINITIALISED Перед использование функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN Сбой в сети
WSAEADDRINUSE Указанный адрес уже используется
WSAEFAULT Значение параметра namelen меньше размера структуры
sockaddr
WSAINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEAFNOSUPPORT Выбранный протокол не может работать с указанным семей-
ством адресов
WSAEINVAL Сокет уже привязан к адресу
WSAENOBUFS Установлено слишком много соединений
WSAENOTSOCK Указанный в параметре дескриптор не является дескрипто-
ром сокета
Пример вызова функции bind показан ниже
if (bind(srv_socket, (LPSOCKADDR) &srv_address,
sizeof(srv_address)) == SOCKET_ERROR)
{
closesocket(srv_socket);
MessageBox(NULL, "Ошибка функции Bind", "Error", MB_OK);
return;
}
6.6 Создание канала связи
49
Страницы
- « первая
- ‹ предыдущая
- …
- 47
- 48
- 49
- 50
- 51
- …
- следующая ›
- последняя »
