请假一个socket的通信包的问题

chp845 2014-04-29 09:42:41
通信协议采用TLV协议(socket为非阻塞模式,TL长度为4),不考虑网络字节和本地字节差别的情况,请问下出现下面情况应该怎么处理?
正确的情况下:
第一组数据包:0x00020006FFFF (TAG:2 length:6)
第二组数据包:0x00020006FF11 (TAG:2 length:6)
第三包数据包:0x00020006FF00 (TAG:2 length:6)

错误的数据包(其中有一组数据是错误的):
第一组数据包:0x00020006FFFF (TAG:2 length:6)
第二组数据包:0x00020005FF11 (TAG:2 length:5)
第三包数据包:0x00020006FF00 (TAG:2 length:6)

请问下,在这种情况下,如果跳过错误的第二组数据包,并能够够正常解析其他两组数据?一般情况,如果是如果解决客户端恶意发送错误的数据的呀!
...全文
155 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chp845 2014-04-30
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
你说的方式BAS464加结束符,这个做法也太浪费了吧! 有没有其他什么办法可以解决我的问题尼?
AndyStevens 2014-04-29
  • 打赏
  • 举报
回复
接收后,直接丢弃呗
赵4老师 2014-04-29
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
l_journey_91 2014-04-29
  • 打赏
  • 举报
回复
丢弃,请求重新传输,连续三次报错,写进日志
chp845 2014-04-29
  • 打赏
  • 举报
回复
引用 1 楼 Automation_dmu 的回复:
接收后,直接丢弃呗
引用 1 楼 Automation_dmu 的回复:
接收后,直接丢弃呗
不是丢的问题,你丢第二组错误数据的时候,也意味着你也会丢弃第三组正确的数据!

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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