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 检索特定的错误代码。
错误代码 | 含义 |
---|---|
在使用此函数之前,必须成功调用 WSAStartup 。 |
|
网络子系统发生故障。 |
|
optval 或 optlen 参数之一指向不在用户地址空间有效部分中的内存。 如果 optlen 参数指向的值小于 CSADDR_INFO 结构的大小,也会返回此错误。 |
|
阻止 Windows 套接字 1.1 调用正在进行,或者服务提供商仍在处理回调函数。 |
|
级别参数未知或无效。 |
|
选项未知或不受所指示的协议系列支持。 |
|
:描述符不是套接字。 |
备注
使用 SO_BSP_STATE 套接字选项调用的 getsockopt 函数检索套接字使用的本地地址、本地端口、远程地址、远程端口、套接字类型和协议。 SO_BSP_STATE套接字选项适用于 IPv6 或 IPv4 套接字, (AF_INET6和AF_INET地址系列) 。
如果 getsockopt 函数成功,则会在 optval 参数指向的缓冲区中的CSADDR_INFO结构中返回信息。 optlen 指向的整数最初应包含此缓冲区的大小;返回时,它将设置为 optval 参数中返回的值的长度(以字节为单位)。
为 s 参数中的套接字描述符填充返回的 CSADDR_INFO 结构中的 iSocketType 和 iProtocol 成员。
如果套接字处于连接或绑定状态,则返回的 CSADDR_INFO 结构的 LocalAddr 成员将设置为表示本地地址和端口的 SOCKADDR 结构。 如果套接字处于连接状态,则返回的 CSADDR_INFO 结构的 RemoteAddr 成员将设置为表示远程地址和端口的 SOCKADDR 结构。
如果套接字未处于连接或绑定状态,则返回的 CSADDR_INFO 结构的 LocalAddr 成员,lpSockaddr 成员中的 NULL 指针和 iSockaddrLength 成员设置为零。 如果套接字未处于绑定状态,则返回的 CSADDR_INFO 结构的 RemoteAddr 成员将返回,lpSockaddr 成员中的 NULL 指针和 iSockaddrLength 成员设置为零。
如果 getsockopt 函数失败, optval 和 optlen 参数保持不变, optval 参数不指向返回 CSADDR_INFO 结构。
请注意, Ws2def.h 头文件会自动包含在 Winsock2.h 中,永远不应直接使用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|
另请参阅