SO_RECVBUF
无论是TCP还是UDP,每一个套接口都有发送缓冲区与接收缓冲区。
接收缓冲区保存接收到的数据,直到应用程序来读。
对于TCP:接收缓冲区可用空间的大小限制了TCP通知对端的窗口大小,这就是TCP的流量控制,也就是说TCP不允许对端发送超过窗口大小的数据,如果超过了窗口大小,TCP将会丢弃他们。
对于UDP:当接收缓冲区的大小不够时,新来的数据将会被丢弃。UDP没有流量控制。
SO_RECVBUF选项允许修改接收缓冲区的缺省大小(默认大小)。
当设置接收缓冲区大小时应该注意,对于TCP,窗口大小是在建立连接时发送的,那么对于客户端,需要在调用connect之前进行窗口设置,对于服务器,要在调用listen之前设置。
TCP套接口缓冲区大小至少应该是MSS的四倍,这是由快重传算法决定的。