Winsock,TCP通信接收方的疑问。

i ama 2005-10-17 09:21:12
用TCP通信,发送方在发送消息的时候消息间用分割符分开
比如发送方依次发送下面4条消息:
AAAAAA#
BBBBBB#
CCCCCC#
DDDDDD#
由于网络传输速度的问题,此时接收方有没有可能接收到这样两条消息:
AAAAAA#BBBBBB#CCC
CCC#DDDDDD#
即一次完整的发送“CCCCCC#”被截断了?
...全文
450 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MFCBibe 2005-10-23
  • 打赏
  • 举报
回复
TCP 发送的是 stream,没有分割点。
UDP 发送的是 消息包,有分割点。

建议看看 windows网络编程技术 这本书,网络上有 PDF 下载的。
xxrl 2005-10-19
  • 打赏
  • 举报
回复
数据包头部包含数据包长度,解析长度,判断,错误则丢弃,发送重新请求指令
bm1408 2005-10-18
  • 打赏
  • 举报
回复
典型的粘包问题~~
hjunxu 2005-10-18
  • 打赏
  • 举报
回复
晕哦。
这类问题因该搞个faq格。
Caps77 2005-10-18
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=207387
alexpdl 2005-10-18
  • 打赏
  • 举报
回复
你需要在TCP数据包之前加上二个字节,来标识该包的长度,
接收端分析,再组成一个个完整的包,做法是,
把收到的数据包先放到一个大的缓冲区中,然后从每次先读包的长度的二字节,

再根据这个长度读后面的数据。
lifengice0706 2005-10-17
  • 打赏
  • 举报
回复
会有这种现象的,这是tcp的粘包,楼上说得带长度是个好办法!
worlftki 2005-10-17
  • 打赏
  • 举报
回复
这就是网络粘包的问题。如果要区分最好在每段数据之前发之前加上长度,收到之后再解析。
当然也可以收发之前都清空缓冲区。
property1 2005-10-17
  • 打赏
  • 举报
回复
gz
Jexhat 2005-10-17
  • 打赏
  • 举报
回复
可能哦

18,363

社区成员

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

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