VB winsocket控件TCP编程数据连包问题

sunman1945 2008-06-12 10:51:25
采用客户端-服务器(C/S)模型编写的程序遇到下面问题。
客户端或者服务器端程序在连续发送多组数据时,如果每组数据之间的时间间隔较小,小于150毫秒,在接收端这几组数据是在一个DATA_ARRIVAL事件中接收到。
例如:
发送 数据A
延时小于150毫秒
发送数据B

在接收端接收到的数据是AB
而不是 接收A
延时
接收B
可以在数据段在加数据头或者数据尾来解决这个问题,现在想知道为什么这两个数据会连接到一块,是发送端的问题还是接收端的问题。

谢谢有过这方面经历的朋友帮忙解答。
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy_sea 2008-06-12
  • 打赏
  • 举报
回复
winsock在senddata以后,并不是立即把数据发送出去,而是先放在缓冲区中,等待合适的机会再发送,这个缓冲区的大小是8K,缓冲区满了也会发送。如果连续senddata多次,数据就会在缓冲区中粘在一起,接收端收到的当然也是粘在一起的。
而doevents的作用是强制把缓冲区的数据立刻发送出去。
happy_sea 2008-06-12
  • 打赏
  • 举报
回复
发送 数据A
doevents
发送数据B

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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