netty为什么不能将同一个bytebuf发送多次

 我来答
千古人文
2016-08-24 · TA获得超过388个赞
知道小有建树答主
回答量:233
采纳率:93%
帮助的人:91.8万
展开全部

这个机制并不是netty独有的,它是java的bytebuffer决定的。因为同一个byte数据,你write之后,底层会对这个bytebuffer执行数据拷贝,即读取这个bytebuffer中的数据,bytebuffer中有一个position的标记,你发送之后,它就会把position标记到bytebuffer的最后,你再次发送时,已读取的数据是不会再读取了,相当于你的bytebuffer中已经没有数据了。

如果你想要多次发送,需要修改一下:

for(int i = 0;i< 200;i++){
    b.markReaderIndex();
    ctx.write(b);
    b.resetReaderIndex();
  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应 | 问题解决率99% | 24小时在线
立即免费咨询律师
13798人正在获得一对一解答
西安夜猫子4分钟前提交了问题
郑州都市传说6分钟前提交了问题
杭州雪花飘飘5分钟前提交了问题
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消
还有疑问? 马上咨询30382位在线律师,3分钟快速解答
立即免费咨询律师

辅 助

模 式