CAsyncSocket::GetSockOpt
调用该成员函数检索套接字选项。
BOOL GetSockOpt(
int nOptionName,
void* lpOptionValue,
int* lpOptionLen,
int nLevel = SOL_SOCKET
);
参数
nOptionName
该值将检索的套接字选项。lpOptionValue
到所请求的选项的值将返回缓冲区的指针。 该值与所选选项的缓冲区 lpOptionValue返回。 该整数指向由 lpOptionLen 应在字节最初包含此缓冲区的大小;并返回,它将设置为返回的值的大小。 对于 SO_LINGER,这将是 LINGER 结构的大小;对于其他选项将是 BOOL 或 int的范围,具体取决于选项卡。 请参见选项及其范围列表的"备注"部分。lpOptionLen
为 lpOptionValue 缓冲区的大小的指针(以字节为单位)。nLevel
选项定义的级别;仅支持的秩是 SOL_SOCKET 和 IPPROTO_TCP。
返回值
非零,如果函数运行成功;否则0和特定错误代码可以通过调用 GetLastError检索。 如果选项从未设置与 SetSockOpt,则 GetSockOpt 返回选项的默认值。 下面的错误适用于此成员函数:
WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。
WSAENETDOWN Windows套接字实现检测网络子系统失败。
WSAEFAULTlpOptionLen 参数无效。
块Windows套接字操作的WSAEINPROGRESS 的进度中。
WSAENOPROTOOPT 选项卡未知或不支持的。 具体而言,而 SO_ACCEPTCONN、 SO_DONTLINGER、 SO_KEEPALIVE、 SO_LINGER和 SO_OOBINLINE 在类型 SOCK_DGRAM,套接字不支持 SO_BROADCAST 在类型 SOCK_STREAM套接字不受支持。
WSAENOTSOCK 描述符不是套接字。
备注
GetSockOpt 在 lpOptionValue检索套接字选项的当前值与任何类型套接字,在所有状态,并存储结果。 选项影响套接字操作,例如数据包路由,带外数据传输,依此类推。
以下选项对 GetSockOpt支持。 类型标识 lpOptionValue解决的数据类型。 TCP_NODELAY 选项使用级别 IPPROTO_TCP;其他选项使用级别 SOL_SOCKET。
值 |
类型 |
含义 |
---|---|---|
SO_ACCEPTCONN |
BOOL |
存储在侦听。 |
SO_BROADCAST |
BOOL |
存储为广播的消息传输配置。 |
SO_DEBUG |
BOOL |
调试启用。 |
SO_DONTLINGER |
BOOL |
如果为true,SO_LINGER 选项禁用。 |
SO_DONTROUTE |
BOOL |
路由是禁用。 |
SO_ERROR |
int |
检索错误条件并清除。 |
SO_KEEPALIVE |
BOOL |
发送维弧。 |
SO_LINGER |
结构则等待并 |
返回当前则等待并选项。 |
SO_OOBINLINE |
BOOL |
带外数据在正常数据流接收。 |
SO_RCVBUF |
int |
缓冲区大小来接收。 |
SO_REUSEADDR |
BOOL |
套接字可以绑定到已被使用的地址。 |
SO_SNDBUF |
int |
缓冲区大小用于发送。 |
SO_TYPE |
int |
套接字(例如,SOCK_STREAM)的类型。 |
TCP_NODELAY |
BOOL |
为发送合并禁用 Nagle 算法。 |
Berkeley Software Distribution为 GetSockOpt 不支持的(BSD)选项是:
值 |
类型 |
含义 |
---|---|---|
SO_RCVLOWAT |
int |
接受最低水位标记。 |
SO_RCVTIMEO |
int |
接收超时。 |
SO_SNDLOWAT |
int |
发送最低水位标记。 |
SO_SNDTIMEO |
int |
发送超时。 |
IP_OPTIONS |
|
在IP标头获取选项。 |
TCP_MAXSEG |
int |
获取TCP最大段范围。 |
调用具有不支持的选项的 GetSockOpt 将由返回的 WSAENOPROTOOPT 错误代码 GetLastError。
要求
Header: afxsock.h