请教: 服务器分2次发送的数据怎么客户端一次就接收完了?

CW_Wei 2005-11-27 05:03:05
问题描述:
在服务器一个函数中调用了2次发送函数(封装了recv)给客户端发信息, 但客户端一次就把2个信息都收了,这是为什么呢?
程序中用到了select,跟它有关么?
...全文
174 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大菠菜 2005-12-08
  • 打赏
  • 举报
回复
tcp是基于“流”式的协议,你要在接收端进行拆包操作~!!
CW_Wei 2005-12-07
  • 打赏
  • 举报
回复
人呢...
mynamelj 2005-12-07
  • 打赏
  • 举报
回复
重新设置send/recv缓存大小
xiao_xiao_zi 2005-12-07
  • 打赏
  • 举报
回复
你重新拆包不就完了
拆包组包是肯定要做的
CW_Wei 2005-12-06
  • 打赏
  • 举报
回复
设置了DONOT_DELAY

但还是没效果

仍然有粘包

WHY????
nuaawenlin 2005-11-28
  • 打赏
  • 举报
回复
可以设置DONOT_DELAY标志来取消Nagle算法
CW_Wei 2005-11-28
  • 打赏
  • 举报
回复
用过延时的方法 但好像效果不行

DONOT_DELAY是什么? 试试
freemme 2005-11-27
  • 打赏
  • 举报
回复
tcp粘包,就是说如果发送的多个包之间的时间间隔很短,则会把多个包合成一个包发送
两个办法解决:
1. 在接受方根据预定义好的结构进行拆包
2. 稍微拉大各个包发送的时间间隔(如果考虑效率则不好)
lifengice0706 2005-11-27
  • 打赏
  • 举报
回复
tcp粘包,正常,和select无关。
_____non______ 2005-11-27
  • 打赏
  • 举报
回复
TCP的特性~~~

TCP会根据缓冲区大小的情况选择发包~~

需要做预处理,把接收到的包拆开

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧