释义 |
CAsyncSocket::GetSockOpt
BOOL GetSockOpt( int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel = SOL_SOCKET );
返回值: 函数调用成功时返回非零值,否则为0,可以调用函数GetLastError获得特定的错误代码。如果没有用SetSockOpt设置选项,则GetSockOpt返回选项的缺省值。此成员函数可用的错误代码有:· | WSANOTINITIALISED | 在调用此API函数之前应该成功地调用了AfxSocketInit。 | · | WSAENETDOWN | Windows Sockets检测到网络子系统故障。 | · | WSAEFAULT | 参数lpOptionLen无效。 | · | WSAEINPROGRESS | 正在进行Windows Sockets块操作。 | · | WSAENOPROTOOPT | 系统不支持该选项。例如,SOCK_STREAM类型的套接字不支持SO_BROADCAST选项,SOCK_DGRAM类型的套接字不支持SO_ACCEPTCONN,SO_DONTLINGER,SO_KEEPALIVE,SO_LINGER和SO_OOBINLINE选项。 | · | WSAENOTSOCK | 描述符不是一个套接字。 |
参数:nOptionName | 待检索的套接字选项名。 | lpOptionValue | 指向存放套接字选项的返回值的缓冲区的指针。函数返回时,套接字选项的值存放在lpOptionValue所指的缓冲中。调用时,参数lpOptionLen存放缓冲区的大小(字节数),函数返回时,把它置成实际返回的字节数。对选项SO_LINGER来说,返回的是LINGER结构的大小;对于其它选项,返回的是BOOL值或int值的长度。请参阅后面“说明”部分选项和返回值大小的列表。 | lpOptionLen | 指向lpOptionValue缓冲的大小(以字节为单位)的指针。 | nLevel | 选项所定义的级别,支持的级别有:SOL_SOCKET和IPPROTO_TCP。 |
说明: 本成员函数用于检索套接字选项的值。GetSockOpt可以查询任意类型和状态的套接字的选项的当前值,结果保存在lpOptionValue中。选项影响套接字操作,例如包的传输路由、带外数据(out-of-band data)的数据传输等。 GetSockOpt支持以下的套接字选项。下表中的类型列说明了pOptionValue中数据的类型。TCP_NODELAY选项用于IPPROTO_TCP这一级别,其它选项用于SOL_SOCKET级别。值 | 类型 | 含义SO_ACCEPTCONN | BOOL | 套接字正在监听 | SO_BROADCAST | BOOL | 套接字被配置成广播消息方式 | SO_DEBUG | BOOL | 允许调试 | SO_DONTLINGER | BOOL | 如果为真,选项SO_LINGER被禁止 | SO_DONTROUTE | BOOL | 路由被禁止 | SO_ERROR | int | 返回并清除错误状态 | SO_KEEPALIVE | BOOL | 正在发送“保持活动” | SO_LINGER | struct LINGER | 返回当前的延时选项 | SO_OOBINLINE | BOOL | 在正常数据流中收到了带外数据 | SO_RCVBUF | int | 接收缓冲区的大小 | SO_REUSEADDR | BOOL | 套接字可以绑定到已经在使用的地址 | SO_SNDBUF | int | 发送缓冲区的大小 | SO_TYPE | int | 套接字的类型(如SOCK_STREAM) | TCP_NODELAY | BOOL | 禁止发送合并数据的Nagle算法 | |
GetSockOpt不支持的Berkeley 软件分布(BSD)选项有:值 | 类型 | 含义SO_RCVLOWAT | int | 接收最低水准标志 | SO_RCVTIMEO | int | 接收超时消息 | SO_SNDLOWAT | int | 发送最低水准标志 | SO_SNDTIMEO | int | 发送超时消息 | IP_OPTIONS | int | 获取IP头的选项 | TCP_MAXSEG | int | 获取TCP段的最大尺寸 | |
调用GetSockOpt时,如果参数中出现了系统不支持的选项,将会产生错误。调用GetLastError可以得到错误代码WSAENOPROTOOPT。
请参阅:CAsyncSocket::SetSockOpt |