最近朋友问我一个问题,说通过TCP每次发送10个字节,连续发3次,问客户端需要做几次接收操作。这个问题自由度很高。客户端阻塞接收的情况下,还跟接收水线的设置值有关。
提到水线,上网搜索了一会,有的博客上说SO_RCVLOWAT只对read和recv有影响,select和poll不理会该选项的数值。后来自己亲自写了两个小程序,测试一下。发现在SUSE Linux Enterprise Server 10发行版本、内核版本:2.6.16.60的机器上的情况是:对select、read/recv函数都有作用,就是说水线的设置对于select是否返回可读是有影响的。