параметр сокета SO_BSP_STATE

Параметр сокета SO_BSP_STATE возвращает локальный адрес, локальный порт, удаленный адрес, удаленный порт, тип сокета и протокол, используемый сокетом.

Для выполнения этой операции вызовите функцию getsockopt со следующими параметрами.

Значение параметра сокета

Константой, представляющей этот параметр сокета, является 0x1009.

Синтаксис

int getsockopt(
  (SOCKET) s,      // descriptor identifying a socket 
  (int) SOL_SOCKET,   // level
  (int) SO_BSP_STATE, // optname
  (char *) optval,         // output buffer,
  (int) *optlen,       // size of output buffer
);

Параметры

s [in]

Дескриптор, определяющий сокет.

level [in]

Уровень, на котором определен параметр. Для этой операции используйте SOL_SOCKET .

optname [in]

Параметр сокета, для которого требуется извлечь значение. Для этой операции используйте SO_BSP_STATE .

optval [out]

Указатель на буфер, в котором возвращается значение запрошенного параметра. Этот параметр должен указывать на буфер, равный или превышающий размер структуры CSADDR_INFO .

optlen [in, out]

Указатель на размер буфера optval в байтах. Этот размер должен быть равен или больше размера структуры CSADDR_INFO .

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

Если операция завершается успешно, функция getsockopt возвращает ноль.

Если операция завершается сбоем, возвращается значение SOCKET_ERROR и можно получить определенный код ошибки, вызвав WSAGetLastError.

Код ошибки Значение
WSANOTINITIALISED
Перед использованием этой функции должен быть выполнен успешный вызов WSAStartup .
WSAENETDOWN
Произошел сбой сетевой подсистемы.
WSAEFAULT
Один из параметров optval или optlen указывает на память, которая не находится в допустимой части адресного пространства пользователя. Эта ошибка также возвращается, если значение, указанное параметром optlen , меньше размера структуры CSADDR_INFO .
WSAEINPROGRESS
Выполняется блокирующий вызов Windows Sockets 1.1 или поставщик услуг по-прежнему обрабатывает функцию обратного вызова.
WSAEINVAL
Параметр level неизвестен или недопустим.
WSAENOPROTOOPT
Параметр неизвестен или не поддерживается указанным семейством протоколов.
WSAENOTSOCK
Дескриптор не является сокетом.

 

Комментарии

Функция getsockopt , вызываемая с параметром сокета SO_BSP_STATE , извлекает локальный адрес, локальный порт, удаленный адрес, удаленный порт, тип сокета и протокол, используемый сокетом. Параметр сокета SO_BSP_STATE работает с сокетами IPv6 или IPv4 (семействами адресов AF_INET6 и AF_INET ).

Если функция getsockopt успешно работает, информация возвращается в CSADDR_INFO структуре в буфере, на который указывает параметр optval . Целое число, на который указывает optlen , должно изначально содержать размер этого буфера; при возврате ему будет задана длина (в байтах) значения, возвращаемого в параметре optval .

Элементы iSocketType и iProtocol в возвращаемой структуре CSADDR_INFO заполняются для дескриптора сокета в параметре s .

Если сокет находится в подключенном или привязанном состоянии, для элемента LocalAddr возвращаемой структуры CSADDR_INFO будет задана структура SOCKADDR , представляющая локальный адрес и порт. Если сокет находится в подключенном состоянии, для элемента RemoteAddr возвращаемой структуры CSADDR_INFO будет задана структура SOCKADDR, представляющая удаленный адрес и порт.

Если сокет не находится в подключенном или привязанном состоянии, то член LocalAddr возвращаемой структуры CSADDR_INFO возвращается с указателем NULL в элементе lpSockaddr иэлементом iSockaddrLength , равным нулю. Если сокет не находится в связанном состоянии, то элемент RemoteAddr возвращаемой структуры CSADDR_INFO возвращается с указателем NULL в элементе lpSockaddr, а элемент iSockaddrLength имеет значение 0.

Если функция getsockopt завершается сбоем, параметры optval и optlen остаются без изменений, а параметр optval не указывает на возвращаемую структуру CSADDR_INFO .

Обратите внимание, что файл заголовка Ws2def.h автоматически включается в Winsock2.h и никогда не должен использоваться напрямую.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
Заголовок
Ws2def.h (включая Winsock2.h)

См. также раздел

getsockopt

CSADDR_INFO

SOCKADDR