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_SOCKETIPPROTO_TCP

返回值

非零,如果函数运行成功;否则0和特定错误代码可以通过调用 GetLastError检索。 如果选项从未设置与 SetSockOpt,则 GetSockOpt 返回选项的默认值。 下面的错误适用于此成员函数:

  • WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。

  • WSAENETDOWN Windows套接字实现检测网络子系统失败。

  • WSAEFAULTlpOptionLen 参数无效。

  • 块Windows套接字操作的WSAEINPROGRESS 的进度中。

  • WSAENOPROTOOPT 选项卡未知或不支持的。 具体而言,而 SO_ACCEPTCONNSO_DONTLINGERSO_KEEPALIVESO_LINGERSO_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

请参见

参考

CAsyncSocket选件类

层次结构图

CAsyncSocket::SetSockOpt