请问tcp长连接读消息发生错误一般是断开还是怎样处理?

51300520 · · 357 次点击 · 开始浏览    置顶
一般长连接应用层的包都是 包长度+内容 这种类似格式,读的时候先读包头获取内容长度,再读内容,假如从包头中获取内容长度后读内容发生了意外,那该怎么办? 如果重新读,貌似就错位了,是不是一般遇到这种情况是用断开连接处理? 我举个例子好理解一点,比如客户端连发2个消息,第一个消息格式是2个字节包头,20个字节内容, 第二个消息是2个字节包头,50个字节内容,服务端收第一个消息后读内容发生错误了,如果重新read,那岂不是读到第二个消息或者第一个消息没读完的部分?这个好像是只要有一个消息如果发生错误,后续消息全部错位? 这个问题是不是通常情况都是做断开连接处理?

入群交流(该群和以上内容无关):Go中文网 QQ交流群:731990104 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网

357 次点击  
加入收藏 微博
3 回复  |  直到 2019-03-07 10:09:47
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传