首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-04-28 
客户端连续发送abc和def两个TCP包后, 服务器分几次recv()接收数据?假如TCP服务器已启动,在开始并没有用rec

客户端连续发送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字节的情况,也仍然可能出现)。

热点排行