开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

getsockopt

接口名称

getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen)

接口描述

获取socket选项值。

参数说明

参数说明备注
sockfd通信节点描述符传入socket描述符。
level选项级别支持SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP。
optname选项名称
  • SO_REUSEADDR:地址重用,0表示关闭;非0表示开启,默认关闭。
  • SO_REUSEPORT:端口重用,0表示关闭;非0表示开启,默认关闭。
  • SO_KEEPALIVE:保活选项,0表示关闭;非0表示开启,默认关闭。
  • SO_LINGER:linger选项,默认关闭。
  • SO_SNDBUF:获取发送缓存即高水位。
  • SO_RCVBUF:获取接收缓存即高水位。
  • SO_SNDTIMEO:获取阻塞模式发送超时时间。
  • SO_RCVTIMEO:获取阻塞模式接收等待超时时间 。
  • SO_ERROR:获取socket的错误信息,读取后内部清零。
  • SO_PROTOCOL:获取套接字协议类型。
  • TCP_NODELAY:获取是否禁止TCP的Nagle算法,默认开启Nagle算法。
  • TCP_KEEPIDLE:获取指定的空闲时间后启动保活探测的时间,单位秒。
  • TCP_KEEPINTVL:获取保活探测的时间间隔,单位秒。
  • TCP_KEEPCNT:获取保活探测的次数。
  • TCP_CORK:获取cork选项。1表示开启,0表示关闭,默认关闭。
  • TCP_DEFER_ACCEPT:获取延迟建链的超时时间,单位秒。
  • TCP_MAXSEG:获取设置的TCP最大报文段。
  • TCP_INFO:获取TCP信息,只能获取部分信息。
  • IP_TOS:获取设置的TOS。
  • *optval选项值非空指针。
    *optlen选项长度非空指针,长度随optval的类型而定。

    返回值

    类型:int

    • 0:表示成功
    • -1:表示失败,并设置errno以指示错误类型

    错误码

    错误码描述
    EFAULT入参optval为空指针,或入参optlen为空指针。
    ENOPROTOOPT协议不支持该选项。
    EINVAL指定的选项在指定的套接字级别无效。入参optlen的值大于INT_MAX,或者入参optlen的值小于对应长度。
    EOPNOTSUPP对应level不支持。
    ELIBBAD系统符号加载失败。
    EINVAL套接字存在,但是套接字对应的数据结构存在异常。
    EINVAL共线程部署模式时,sockfd的worker id和当前线程的worker id不一致,即socket跨worker线程调用。