33、Nio(selector(处理消息边界问题(容量超出)))

Nio(selector(处理消息边界问题(容量超出)))

第一步:我们将前面的处理黏包问题的复制过来处理这个buffer(之前我们处理buffer是我呢就将其读到的数据直接复制到buffer里)

客户端的案例:(这里的read是一个阻塞方法,这样我们就不用在前面打断点,然后debug运行了)

第二步:案例变为超出buffer大小

测试:(逻辑是我们服务器端第一次没读完的时候(不是最后的不算完整),会读第二次,这是它就将第二次当做完整信息打印了)

优化思路:(扩容,当发现buffer不够的时候就变为两倍咯)

!!!注意,由于我们这里需要用的是同一个buffer了。那么buffer就不能再设置为局部变量了

第一步我们还是读第一部分,发现buffer不够,buffer扩容。再是第一部分内容拷贝进来(扩容的buffer)再读我们的第二部分到第一部分后面了

猜你喜欢

转载自blog.csdn.net/logtcm4/article/details/127821051
今日推荐