关于CSocket的发送和接收的问题

shanyang1 2010-06-03 09:47:25
client和server连起来后,client向server send数据
send的数据非常快,server端使用onreceive来监控接受,每次接受后显示到编辑框
本来计划是每次send后server端receive一个对应的字符串,现在由于client的发送速度太快
server端receive到的是好几个client端发送字符串拼起来的字符串

这种现象是否正常,要怎么解决才能让一个client发送对应一个server接收,而不是几个client发送拼起来成一个server接收?
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨夜无风 2010-06-05
  • 打赏
  • 举报
回复
粘包问题

x___f__ 2010-06-05
  • 打赏
  • 举报
回复
学习了,支持一下!
sharptiger123 2010-06-04
  • 打赏
  • 举报
回复
在 服务端定义一个 CSocketClient类的数组或array 来接收客户连接
Squall_zy 2010-06-04
  • 打赏
  • 举报
回复
这种现象是正常的。所有的传输问题(发送时间、发送大小)是TCP来解决的,这个你没法干预。
想要一一对应,你必须在定义好结构。给你两个建议:

一、发送定长的数据。
当然,你接受的时候也得定长接收。例如你每次发50字节,而接收端某一时刻到达了140字节(这个是可能的,因为如何组包是传输层的事情,你没法干预),于是你依然只Recv 50字节。

二、发送带“消息头”的数据。(消息头中要带有消息长度信息)
这个思想和上面基本一样,就是你这次发多少,你要先告诉对方,对方先收消息头,再根据消息头去判断“下次该收多少”。
周药师 2010-06-03
  • 打赏
  • 举报
回复
优化服务端业务处理
allenjiao 2010-06-03
  • 打赏
  • 举报
回复
楼主的问题应该是Socket粘包的问题
你可以网上查查解决办法
【天运子】 2010-06-03
  • 打赏
  • 举报
回复
怎么会这样呢?我用循环发送都不会出现并一起的现象 主要是你接受的时候处理了

18,356

社区成员

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

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