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