socket粘包大家是怎么解决的?保持连接是需要设置什么吗?

csdsuper 2009-03-09 02:49:07
粘包大家是怎么解决的?保持连接是需要设置什么吗?
...全文
429 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhuwy 2009-06-21
  • 打赏
  • 举报
回复
可采取以下几种措施。一是对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满;二是对于接收方引起的粘包,则可通过优化程序设计、精简接收进程工作量、提高接收进程优先级等措施,使其及时接收数据,从而尽量避免出现粘包现象;三是由接收方控制,将一包数据按结构字段,人为控制分多次接收,然后合并,通过这种手段来避免粘包。
参考:http://blog.csdn.net/michelsn/archive/2008/01/02/2009894.aspx
aliyanghi 2009-06-21
  • 打赏
  • 举报
回复
顶!!
SWind 2009-03-09
  • 打赏
  • 举报
回复
发送方在发送包的时候,在固定位置标明自己数据的长度
例如 0x00 0x03 0x77
前两位说明包的总长度是3位 所以只取buffer的前三位 这种用法非常常见

另外,也可以在包的末尾加标志,例如回车加换行
读的时候,寻找第一个末尾标志,之后的内容舍弃
天乐 2009-03-09
  • 打赏
  • 举报
回复
我一般使用自定的格式,能够正确解析出想要的数据。

关于粘包的问题讨论,推荐一看一下这个:

http://topic.csdn.net/t/20040627/16/3126287.html
天乐 2009-03-09
  • 打赏
  • 举报
回复
我一般使用自定的格式,能够正确解析出想要的数据。

关于粘包的问题讨论,推荐一看一下这个:

http://topic.csdn.net/t/20040627/16/3126287.html
天乐 2009-03-09
  • 打赏
  • 举报
回复
没遇到过粘包

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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