快捷搜索: 王者荣耀 脱发

Unix网络编程---套接字联网API chapter 7

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函数

该函数可以执行各种描述符控制操作。

经验分享 程序员 微信小程序 职场和发展