tcp_sendspace 可调参数

在将应用程序封锁在发送调用之前,tcp_sendspace 可调参数指定发送应用程序可以在该内核中缓冲多少数据。

在通过 TCP 协议将它发送至接收器之前,TCP 套接字发送缓冲区是用于使用 mbufs/集群来在内核中缓冲该应用程序数据。 发送缓冲区的缺省大小是通过 tcp_sendspace 可调参数值指定的,或者程序可使用 setsockopt() 子例程将其覆盖。

您应该至少将 tcp_sendspace 可调参数值设置成与 tcp_recvspace 值一样大,对于高速适配器,tcp_sendspace 值应该至少是 tcp_recvspace 值的两倍。

如果应用程序在套接字中指定了 O_NDELAY 或 O_NONBLOCK(这会导致非阻塞 I/O),那么如果发生缓冲区填满了,该应用程序将返回(带有一个 EWOULDBLOCK/EAGAIN 错误)而并非被置于休眠方式。 必须对应用程序进行编码,来处理这个错误(建议的解决方案是睡眠一段时间然后重试发送)。