用过protobuf的进来回答下

就想叫yoko 2014-07-29 07:40:02
protobuf编码后是不是没有边界也没有包长信息?那么在tcp长连接中,使用它作为信令编码格式(可能有不同的信令),是否还必需在外面包一层,例如在前面加上4字节包长信息?

另外像XMPP这种,有人知道是怎么解决这种tcp‘粘包’的问题吗?
...全文
337 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
uf96800 2017-02-02
  • 打赏
  • 举报
回复
光靠包长度是没用的,因为如果出现断包,就是包的一部分信息丢失,你再按包长度就全错了,所以还要在尾部加上校验信息
zilaishuichina 2014-07-30
  • 打赏
  • 举报
回复
protobuf编码后是不是没有边界也没有包长信息? 是的, 需要自己加一下包长度,你可能还得加个协议号来表示是什么协议 另外像XMPP这种,有人知道是怎么解决这种tcp‘粘包’的问题吗? 不管啥协议,通常只要前面有个包长度,就不存在粘包的问题,反正是按照包长度解析,如果后面有剩余的内容就是下一个包
就想叫yoko 2014-07-30
  • 打赏
  • 举报
回复
顶顶~~~~~~~
Hot_A_Lin 2014-07-30
  • 打赏
  • 举报
回复
现在这个protobuf用的好广泛,我也是刚开始学习的。

64,642

社区成员

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

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