如果需要跳过的直接大于当前已有的字节当然也是不对的继续抛大发黄金版网站出异常

当前位置:大发黄金版客户端 > 大发黄金版网站 > 如果需要跳过的直接大于当前已有的字节当然也是不对的继续抛大发黄金版网站出异常
作者: 大发黄金版客户端|来源: http://www.ouiouibebe.com|栏目:大发黄金版网站

文章关键词:大发黄金版客户端,长度域

  第一段代码是丢弃模式的我们直接跳过看第二段

  我们上一篇讲过一个调整值长度域里面内容不一定表示的就是实际内容的长度它可能加上长度域的长度或者head或者两者都有所以我们通过这个调整值来调整。

  由于长度域表示的值是8这个8包括了长度域2和长度域前面的两个内容2当然还有最终的信息4所以是8所以需要调整 -4也就是减去长度域2和长度域之前的内容2。最终上面那个表达式的值就是8也就是最终读取到的整段信息的内容。

  到了这里就说明我们的数据是正确的没有超过maxFrameLength。先转换为10进制。

  如果当前可读的内容小于我们需要读取的内容那么就说明数据包不完整继续回去读。

  如果需要跳过的直接大于当前已有的字节当然也是不对的继续抛出异常。

  最后把需要的信息提取出来并且移动指针然后把取到的信息返回

  我们先分析代码是如何进入丢弃模式的也就是这一段

  进入丢弃模式并且需要记录剩下的还没有丢弃的数据然后跳过当前可读的数据。大发黄金版网站

  如果还需要丢弃的数据为0那就可以结束丢弃模式了并且tooLongFrameLength的值赋给别的变量方便做后续异常处理的参数。如果是非快速失败模式或者是快速失败模式并且是第一次进来因为我们上一步判断discard的时候只用了0没有考虑到0的情况所以也有可能进入到这个判断这种情况是第一次进入丢弃模式但是马上在这里又还原了所以也可以调用fail方法那就调用fail抛出异常。

  否则符合failFast模式并且是第一次进来也是抛出异常。

  比较需要丢弃的数据的长度和可读的长度取最小值就是是我们当前可以丢弃的长度

  最后把之前需要丢弃的长度减去当前丢弃了的长度就得到还需要丢弃的长度这个还需要丢弃的长度0大于0说明可读长度还小于bytesToDiscard还有内容需要丢弃等于0说明都丢弃完了然后记录还需要丢弃的长度。

  morebetter4hl:在yml文件里增加上面两行配置,大发黄金版网站果然解决了,非常感谢

  weixin_45795054:一堆只会复制别人的文章的人。个个都以为只要链表长度大于等于8就会转红黑树,哈哈,笑了,不经大脑思考

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!