Сетевые технологии. Учебное пособие. Баканов В.М. - 49 стр.

UptoLike

Составители: 

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