客户端连续发送abc和def两个TCP包后, 服务器分几次recv()接收数据?解决方案

客户端连续发送abc和def两个TCP包后, 服务器分几次recv()接收数据?

假如TCP服务器已启动, 在开始并没有用recv接收数据. 然后:

1. 客户端用send()连续发送abc和def两个TCP包.
2. 客户端发送完毕后, 服务器才开始用recv接收数据.

请问服务器需要调用几次recv()?

------解决方案--------------------
TCP是基于流的,数据之间没有间隔。
客户端send两次,大小总共为6字节。服务器接收的时候,要是缓存为1字节,则要接收6次,缓存为2字节,则接收3次,以此类推。
------解决方案--------------------
所以要循环接收直到接收所有的数据.
------解决方案--------------------
不定,就算缓存为2字节,一次读取也不一定返回2字节,可能就1字节(排除数据不够2字节的情况,也仍然可能出现)。