32、Nio(selector(处理消息边界问题(三种方案)))

Nio(selector(处理消息边界问题(三种方案)))

  1. 若是传的数据大于buffer,我们可以将buffer扩容处理

第一种方案:传的数据小于buffer,固定消息的长度,我们再给服务器也固定长度读取(容易影响带宽)

第二种方案:我们根据分隔符拆分消息,我们创建临时buffer大小,去接收消息(有两个问题1、我们要去遍历消息找到分隔符,时间开销大2、若是其消息长度还是大于buffer长度,还是要考虑扩容问题)

第三种方案:我们传消息的时候先传我们消息的大小给我们的服务器,我们服务器就分补来接收。动态的分配buffer大小来接收消息。(我们的http也是这种方案http2.0(ltv格式))

http2.0:(ltv)先传长度,再是消息的类型,最后是消息

http1.0:(tlv)先传文本类型,在传消息大小,最后是消息

总结:

猜你喜欢

转载自blog.csdn.net/logtcm4/article/details/127821015