套接字选项

一 获取和设置套接字相关选项的函数:

(1)仅适用于套接字:getsockopt和setsockopt。

格式:

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

*int setsockopt(int sockfd,int level,int optname,const void*optval,socklen_t optlen);

参数:

*sockfd:必须指向一个打开的套接字描述符。

*level:或为通用套接字代码(SOL_SOCKET);或为某个特定于协议的代码(IPPROTO_IP或IPPROTO_TCP等)。

*optname:选项名。

*optval:setsockopt从optval取得选项待设置的新值;getsockopt把已获取的当前值放到*optval中。

*optlen:指定optval的大小。


(2)fcntl:把套接字设置为非阻塞I/O或其他等。

(3)ioctl。


二 套接字选项:

(1)按level分类(列出常见四项,还有其它,没有UDP):

*SOL_SOCKET(通用套接字选项)

*IPPROTO_IP(IPv4套接字选项)

*IPPROTO_IPv6(IPv6套接字选项)

*IPPROTO_TCP(TCP套接字选项)


(2)常见通用套接字选项(SO_ERROR、SO_KEEPALIVE、SO_LINGER、):

*SO_BROADCASE:本选项开启或禁止发送广播消息的能力,只有数据报套接字(UDP)支持广播。

*SO_DEBUG:仅TCP支持,开启后,内核为TCP在该套接字发送和接收的所有分组保留详细的跟踪信息。

*SO_DONREOUTE:规定外出的分组将绕过底层协议的正常路由机制。

*SO_ERROR:通过SO_ERROR选项访问so_error的值。so_error即待处理错误,套接字发生错误时,原来Berkeley的内核将so_error变量设置为标准Unix EXXX值的一个。

*SO_KEEPALIVE:给一个TCP套接字设置该选项后,如果两小时内任一方向都没有数据交换,TCP就发送一个保活探测分节。

*SO_LINGER:指定close函数对面向连接协议如何操作。

*SO_OOBINLINE:带外数据被留在正常的输入队列中。

*SO_RCVBUF和SO_SNDBUF:改变发送或接收缓冲区的大小。

*SO_RCVLOWAT和SO_SNDLOWAT:允许修改发送和接收低水位标记(由select使用)。

*SO_RCVTIMEO和SO_SNDTIMEO:给套接字的发送和接受设置一个超时值。

*SO_REUSEADDR和SO_REUSEPORT。

*SO_TYPE:返回套接字类型,诸如SOCK_STREAM或SOCK_DGRAM。

*SO_USELOOPBACK:仅适用于路由域套接字。


(3)TCP套接字选项(两个):

*TCP_MAXSEG:获取或设置TCP连接的最大分片大小。

*TCP_NODELAY:开启本选项将禁止TCP的Nagle算法。默认是启动的。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值