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
);

parameters

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
optvaloptlen 参数之一指向不在用户地址空间有效部分中的内存。 如果 optlen 参数指向的值小于 CSADDR_INFO 结构的大小,也会返回此错误。
WSAEINPROGRESS
阻止 Windows 套接字 1.1 调用正在进行,或者服务提供商仍在处理回调函数。
WSAEINVAL
级别参数未知或无效。
WSAENOPROTOOPT
选项未知或不受所指示的协议系列支持。
WSAENOTSOCK
:描述符不是套接字。

 

备注

使用 SO_BSP_STATE 套接字选项调用的 getsockopt 函数检索套接字使用的本地地址、本地端口、远程地址、远程端口、套接字类型和协议。 SO_BSP_STATE套接字选项适用于 IPv6 或 IPv4 套接字, (AF_INET6AF_INET地址系列) 。

如果 getsockopt 函数成功,则会在 optval 参数指向的缓冲区中的CSADDR_INFO结构中返回信息。 optlen 指向的整数最初应包含此缓冲区的大小;返回时,它将设置为 optval 参数中返回的值的长度(以字节为单位)。

s 参数中的套接字描述符填充返回的 CSADDR_INFO 结构中的 iSocketTypeiProtocol 成员。

如果套接字处于连接或绑定状态,则返回的 CSADDR_INFO 结构的 LocalAddr 成员将设置为表示本地地址和端口的 SOCKADDR 结构。 如果套接字处于连接状态,则返回的 CSADDR_INFO 结构的 RemoteAddr 成员将设置为表示远程地址和端口的 SOCKADDR 结构。

如果套接字未处于连接或绑定状态,则返回的 CSADDR_INFO 结构的 LocalAddr 成员,lpSockaddr 成员中的 NULL 指针和 iSockaddrLength 成员设置为零。 如果套接字未处于绑定状态,则返回的 CSADDR_INFO 结构的 RemoteAddr 成员将返回,lpSockaddr 成员中的 NULL 指针和 iSockaddrLength 成员设置为零。

如果 getsockopt 函数失败, optvaloptlen 参数保持不变, optval 参数不指向返回 CSADDR_INFO 结构。

请注意, Ws2def.h 头文件会自动包含在 Winsock2.h 中,永远不应直接使用。

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Ws2def.h (包括 Winsock2.h)

另请参阅

getsockopt

CSADDR_INFO

SOCKADDR