getsockopt()函数

  简述:   获取一个套接口选项。   #include   int PASCAL FAR getsockopt( SOCKET s, int level, int optname,   char FAR* optval, int FAR* optlen);   s:一个标识套接口的描述字。   level:选项定义的层次。支持的层次仅有SOL_SOCKET和IPPROTO_TCP。   optname:需获取的套接口选项。   optval:指针,指向存放所获得选项值的缓冲区。   optlen:指针,指向optval缓冲区的长度值。   注释:   getsockopt()函数用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optval。在不同协议层上存在选项,但往往是在最高的“套接口”层次上,设置选项影响套接口的操作,诸如操作的阻塞与否、包的选径方式、带外数据的传送等。   被选中选项的值放在optval缓冲区中。optlen所指向的整形数在初始时包含缓冲区的长度,在调用返回时被置为实际值的长度。对SO_LINGER选项而言,相当于linger结构的大小,对其他选项来说,是一个整形数的大小。   如果未进行setsockopt()调用,则getsockopt()返回系统缺省值。   getsockopt()支持下列选项。其中“类型”栏指出了optval所指向的值。仅有TCP_NODELAY选项使用了IPPROTO_TCP层;其余选项均使用SOL_SOCKET层。   选项 类型 意义   SO_ACCEPTCONN BOOL 套接口正在用listen()监听。   SO_BROADCAST BOOL 套接口设置为传送广播信息。   SO_DEBUG BOOL 允许调试。   SO_DONTLINER BOOL 若为真,则SO_LINGER选项被禁止。   SO_DONTROUTE BOOL 禁止选径。   SO_ERROR int 获取错误状态并清除。   SO_KEEPALIVE BOOL 发送“保持活动”信息。   SO_LINGER struct linger FAR* 返回当前各linger选项。   SO_OOBINLINE BOOL 在普通数据流中接收带外数据。   SO_RCVBUF int 接收缓冲区大小。   SO_REUSEADDR BOOL 套接口能和一个已在使用中的地址捆绑。   SO_SNDBUF int 发送缓冲区大小。   SO_TYPE int 套接口类型(如SOCK_STREAM)。   TCP_NODELAY BOOL 禁止发送合并的Nagle算法。   getsockopt()不支持的BSD选项有:   选项名 类型 意义   SO_RCVLOWAT int 接收低级水印。   SO_RCVTIMEO int 接收超时。   SO_SNDLOWAT int 发送低级水印。   SO_SNDTIMEO int 发送超时。   IP_OPTIONS 获取IP头中选项。   TCP_MAXSEG int 获取TCP最大段的长度。   用一个未被支持的选项去调用getsockopt()将会返回一个WSAENOPROTOOPT错误代码(可用WSAGetLastError()获取)。   返回值:   若无错误发生,getsockopt()返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。   错误代码:   WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。   WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。   WSAEFAULT:optlen参数非法。   WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。   WSAENOPROTOOPT:未知或不支持选项。其中,SOCK_STREAM类型的套接口不支持SO_BROADCAST选项,SOCK_DGRAM类型的套接口不支持SO_ACCEPTCONN、SO_DONTLINGER 、SO_KEEPALIVE、SO_LINGER和SO_OOBINLINE选项。   WSAENOTSOCK:描述字不是一个套接口。   参见:   setsockopt(), WSAAsyncSelect(), socket().
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
getsockopt函数的参数包括: - 第一个参数:套接字描述符,指定要操作的套接字。 - 第二个参数:选项所在的协议层,用于指定要操作的选项所在的协议层。 - 第三个参数:需要访问的选项名,用于指定要操作的选项。 - 第四个参数:对于getsockopt()函数,是指向返回选项值的缓冲区;对于setsockopt()函数,是指向包含新选项值的缓冲区。 - 第五个参数:对于getsockopt()函数,作为入口参数时,指定选项值缓冲区的最大长度,作为出口参数时,指定选项值的实际长度;对于setsockopt()函数,指定选项值的长度。 例如,可以使用getsockopt()函数来获取套接字的选项值: ``` int option_value; socklen_t option_length = sizeof(option_value); getsockopt(sockfd, level, optname, &option_value, &option_length); ``` 其中,sockfd是套接字描述符,level是选项所在的协议层,optname是需要访问的选项名,option_value是用于存储选项值的缓冲区,option_length是缓冲区长度的入口参数和实际长度的出口参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [setsockopt函数详解](https://blog.csdn.net/baidu_27386223/article/details/47678973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值