LPWSPGETSOCKOPT 回调函数 (ws2spi.h)
LPWSPGetSockOpt 函数检索套接字选项。
语法
LPWSPGETSOCKOPT Lpwspgetsockopt;
int Lpwspgetsockopt(
SOCKET s,
int level,
int optname,
char *optval,
LPINT optlen,
LPINT lpErrno
)
{...}
参数
s
标识套接字的描述符。
level
定义选项的级别;支持的级别包括 SOL_SOCKET。 (有关更多特定于协议的级别,请参阅附件。)
optname
要为其检索值的套接字选项。
optval
一个指向缓冲区的指针,在该缓冲区中,将返回所请求的选项的值。
optlen
指向 optval 缓冲区的大小(以字节为单位)的指针。
lpErrno
指向错误代码的指针。
返回值
如果未发生错误, 则 LPWSPGetSockOpt 返回零。 否则,将返回值 SOCKET_ERROR,并且 lpErrno 中提供了特定的错误代码。
错误代码 | 含义 |
---|---|
网络子系统发生故障。 | |
optval 或 optlen 参数之一不是用户地址空间的有效部分,或者 optlen 参数太小。 | |
级别未知或无效。 | |
在回调正在进行时调用函数。 | |
选项未知或不受所指示的协议系列支持。 | |
:描述符不是套接字。 |
注解
LPWSPGetSockOpt 函数检索与任何类型、处于任何状态的套接字关联的套接字选项的当前值,并将结果存储在 optval 中。 选项可以存在于多个协议级别,但它们始终存在于最上面的套接字级别。 选项会影响套接字操作,例如数据包路由和 OOB 数据传输。
与所选选项关联的值在缓冲区 optval 中返回。 optlen 指向的整数最初应包含此缓冲区的大小;返回时,它将设置为返回的值的大小。 对于SO_LINGER,这是结构挥之不去的大小;对于大多数其他选项,它将是整数的大小。
Windows 套接字 SPI 客户端负责分配它指定的任何参数直接或间接指向的任何内存空间。
如果从未使用 LPWSPSetSockOpt 设置选项,则 LPWSPGetSockOpt 返回选项的默认值。
有关套接字选项的详细信息,请参阅 套接字选项。
level = SOL_SOCKET
值 | 类型 | 含义 | 默认 |
---|---|---|---|
SO_ACCEPTCONN | BOOL | 套接字正在通过 LPWSPListen 侦听。 | FALSE ,除非已执行 LPWSPListen 。 |
SO_BROADCAST | BOOL | 套接字配置为用于传输和接收广播消息。 | FALSE |
SO_DEBUG | BOOL | 已启用调试。 | FALSE |
SO_DONTLINGER | BOOL | 如果为 true,则禁用SO_LINGER选项。 | TRUE |
SO_DONTROUTE | BOOL | 路由功能被禁用。 设置此套接字选项成功,但在AF_INET套接字上将被忽略;在具有 WSAENOPROTOOPT 的AF_INET6套接字上失败。 ATM 套接字不支持此选项, (导致错误) 。 | FALSE |
SO_ERROR | 整型 | 检索错误状态并清除。 | 0 |
SO_GROUP_ID | GROUP | 保留。 | Null |
SO_GROUP_PRIORITY | 整型 | 保留。 | 0 |
SO_KEEPALIVE | BOOL | 正在发送 Keepalives。 不支持 ATM 套接字 (会导致) 错误。 | FALSE |
SO_LINGER | LINGER 结构 | 返回当前的逗留选项。 | 1 处于默认) (,0 处于关闭状态 |
SO_MAX_MSG_SIZE | 无符号整数 | 面向消息的套接字类型的消息的最大大小 (例如,SOCK_DGRAM) 。 对于面向流的套接字没有意义。 | 依赖于实现 |
SO_OOBINLINE | BOOL | 正在正常数据流中接收 OOB 数据。 | FALSE |
SO_PROTOCOL_INFO | WSAPROTOCOL_INFO 结构 | 绑定到此套接字的协议的协议信息的说明。 | 依赖于协议 |
SO_RCVBUF | 整型 | 为接收保留的每个套接字的总缓冲区空间。 这与SO_MAX_MSG_SIZE无关,也不一定对应于 TCP 接收窗口的大小。 | 与实现相关 |
SO_REUSEADDR | BOOL | 套接字可以绑定到已在使用的地址。 此选项不适用于 ATM 套接字。 | FALSE。 |
SO_SNDBUF | 整型 | 为发送保留的每个套接字缓冲区总空间。 这与SO_MAX_MSG_SIZE无关,也不一定对应于 TCP 发送窗口的大小。 | 与实现相关 |
SO_TYPE | 整型 | 套接字 (的类型,例如,SOCK_STREAM) 。 | 使用 LPWSPSocket“>LPWSPSocket 创建时 |
PVD_CONFIG | 服务提供程序依赖 | 与 套接字关联的服务提供程序中的不透明数据结构对象。 此对象存储服务提供程序的当前配置信息。 此数据结构的确切格式是特定于服务提供程序的。 | 与实现相关 |
使用不支持的选项调用 LPWSPGetSockOpt 将导致在 lpErrno 中返回 WSAENOPROTOOPT 错误代码。
-
SO_DEBUG
-
如果 windows 套接字 SPI 客户端设置了SO_DEBUG选项,则建议 windows 套接字服务提供程序 (但不要求) 提供输出调试信息。 生成调试信息的机制及其采用的形式超出了本规范的范围。
-
SO_ERROR
-
SO_ERROR选项返回并重置基于每个套接字的错误代码 (,该错误代码不一定与 WS2_32.DLL) 维护的每线程错误代码相同。 在套接字上成功调用 Windows 套接字不会重置 SO_ERROR 选项返回的基于套接字的错误代码。
-
SO_GROUP_ID
-
保留。 此值应为 NULL。
-
SO_GROUP_PRIORITY
-
保留。
-
Windows 套接字 SPI 客户端可以通过打开 SO_KEEPALIVE 套接字选项,请求 TCP/IP 服务提供程序允许在 TCP 连接上使用保持连接数据包。 Windows 套接字提供程序不需要支持使用 keep-alive:如果支持,则精确语义特定于实现,但应符合 RFC 1122: Internet 主机的要求 - 通信层的第 4.2.3.6 节。 (此资源可能仅以英语提供。) 如果连接因保持连接而断开,则错误代码 WSAENETRESET 将返回到套接字上正在进行的任何调用,并且任何后续调用都将失败并出现 WSAENOTCONN 。
-
SO_LINGER
-
SO_LINGER控制未发送的数据在套接字上排队并执行 LPWSPCloseSocket 时执行的操作。 有关SO_LINGER设置影响 LPWSPCloseSocket 语义的方式的说明,请参阅 LPWSPCloseSocket。 Windows 套接字 SPI 客户端通过使用以下元素创建 optval 参数 (指向的 LINGER 结构来获取所需的行为) :
}
-
SO_MAX_MSG_SIZE
-
这是一个仅获取套接字选项,它指示面向消息的套接字类型 (出站发送消息的最大大小,例如,SOCK_DGRAM) 由服务提供商实现。 它对于面向字节流的套接字没有意义。 没有用于确定最大入站消息大小的设置。
-
SO_PROTOCOL_INFOW
-
这是一个 get-only 选项,它提供与此套接字关联的 WSAPROTOCOL_INFO 结构。 有关此结构的详细信息,请参阅 WSCEnumProtocols 。
-
SO_SNDBUF
-
当 Windows 套接字服务提供程序支持SO_RCVBUF和SO_SNDBUF选项时,Windows 套接字 SPI 客户端可以使用 LPWSPSetSockOpt 请求不同的缓冲区大小 (更大或更小) 。 即使服务提供商没有提供请求的整个金额,调用也可以成功。 Windows 套接字 SPI 客户端必须使用相同的选项调用此函数,才能检查实际提供的缓冲区大小。
-
SO_REUSEADDR
-
默认情况下,无法将套接字绑定 (请参阅 LPWSPBind) 到已在使用的本地地址。 但是,有时可能需要以这种方式重用地址。 由于每个连接都是通过本地地址和远程地址的组合唯一标识的,因此只要远程地址不同,将两个套接字绑定到同一个本地地址就没有问题。 若要通知 Windows 套接字提供程序应允许套接字上的 LPWSPBind 绑定到另一个套接字已在使用的本地地址,Windows 套接字 SPI 客户端应在发出 LPWSPBind 之前为套接字设置SO_REUSEADDR套接字选项。 请注意, 选项仅在 LPWSPBind 时解释。 因此,在未绑定到现有地址的套接字上设置选项,并在 LPWSPBind 之后设置或重置选项对它或任何其他套接字无效,这是不必要的 (但) 无害的。
-
PVD_CONFIG
-
此选项从 与套接字关联的服务提供程序中检索不透明的数据结构对象。 此对象存储服务提供程序的当前配置信息。 此数据结构的确切格式特定于服务提供程序。
要求
要求 值 最低受支持的客户端 Windows 2000 Professional [仅限桌面应用] 最低受支持的服务器 Windows 2000 Server [仅限桌面应用] 标头 ws2spi.h 另请参阅