测试办法:
1. 使用nc做一个server
nc -l localhost 8181
CTRL-Z
2. 使用nc做client
nc localhost 8181 </dev/zero
3. netstat -an |grep 8181
1 2 |
tcp 171008 0 127.0.0.1:8181 127.0.0.1:43900 ESTABLISHED - 关闭 (0.00/0/0) tcp 0 1279872 127.0.0.1:43900 127.0.0.1:8181 ESTABLISHED 22985/nc 未知-4 (107.99/0/0) |
171008 就是读buffer的大小(约160KB), 1279872就是写buffer的大小(约1.2MB)
现在nc client被write给阻塞住了,如果nc client之发送小于 171008 + 1279872 的数据,则现在已经兴高采烈地quit了,然而,server端却连1个字节都没处理呢,如果在把server给杀掉,则这些数据就都算丢弃了。