параметр сокета 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.
Код ошибки | Значение |
---|---|
Перед использованием этой функции должен быть выполнен успешный вызов WSAStartup . |
|
Произошел сбой сетевой подсистемы. |
|
Один из параметров optval или optlen указывает на память, которая не находится в допустимой части адресного пространства пользователя. Эта ошибка также возвращается, если значение, указанное параметром optlen , меньше размера структуры CSADDR_INFO . |
|
Выполняется блокирующий вызов Windows Sockets 1.1 или поставщик услуг по-прежнему обрабатывает функцию обратного вызова. |
|
Параметр level неизвестен или недопустим. |
|
Параметр неизвестен или не поддерживается указанным семейством протоколов. |
|
Дескриптор не является сокетом. |
Комментарии
Функция 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 [только классические приложения] |
Заголовок |
|
См. также раздел