1 获取和设置影响套接字的选项
1)getsockopt函数和setsockopt函数
2)fcntl函数
把套接字设置为非阻塞式IO或信号驱动式IO以及设置套接字属主的POSIX方法
3)ioctl函数
2 getsockopt和setsockopt
套接字选项粗分为2大类型:
1 启用或禁用某个特性的二元选项(标志选项)
2 取得并返回可以设置或检查的特定值的选项
3 套接字状态
4 通用套接字选项
1)SO_BROADCAST选项
本选项开启或禁止进程发送广播消息的能力。只有数据套接字支持广播,并且还必须是在支持广播消息的网络上。
2)SO_DEBUG选项
3)SO_ERROR选项
是一个可以获取但无法设置的套接字选项
4)SO_KEEPALIVE选项
给一个TCP套接字设置保持存活选项后,如果2个小时内在该套接字的任一方向上无数据交换,TCP会自动给对端发送一个保持存活探测分节,这是一个对端必须响应的TCP分节。
5)SO_LINGER选项
6)SO_RCVBUF和SO_SNDBUF选项
背景:
这2个套接字选项允许我们改变接收缓冲区和发送缓冲区中的默认大小。早期默认为4096字节,后面可以是8192-61440之间的任意值。
TCP套接字缓冲区大小至少应该是相应连接的MSS值的四倍。典型的缓冲区大小默认值为8192字节或更大。典型的MSS值为512或1460.
7)SO_RCVLOWAT和SO_SNDLOWAT选项
8)SO_RCVTIMEO和SO_SNDTIMEO套接字选项
9)SO_REUSEADDR和SO_REUSEPORT选项
SO_REUSEADR四个功能:
1 允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将该端口用作它们本地端口的连接依然存在
2 允许在同一个端口上启动同一服务器的多个实例,只要每个实例绑定不同的本地IP即可
对于TCP来说,绝不可能启动捆绑相同IP地址和相同端口号的多个服务器,这是完全重复的捆绑。
SO_REUSEPORT
5 TCP套接字选项
TCP有2个套接字选项,它们的级别为IPPROTO_TCP
1)TCP_MAXSEG套接字选项
本选项允许我们获取或设置TCP连接的最大分节大小MSS,返回值是我们的TCP可以发送给对端的最大数据,它通常是由对端使用SYN分节通告的MSS。
2)TCP_NODELAY套接字选项
开启该选项将禁止TCP的Nagle算法,默认下该算法是启动的。
6 fcntl函数
该函数可以执行各种描述符控制操作。