gpt4 book ai didi

java - Netty 的 ChannelBuffer.read 出现奇怪的 indexOutOfBound 错误?

转载 作者:行者123 更新时间:2023-12-02 00:50:53 25 4
gpt4 key购买 nike

我的 netty 项目中有以下简单代码,它期望从上游读取一个整数。管道中没有编码器。

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
ChannelBuffer m = (ChannelBuffer) e.getMessage();

m.readInt()
}

当数据从网络传入时,该方法会正确触发(好兆头),但在尝试读取时,会出现以下错误:

java.lang.IndexOutOfBoundsException
at org.jboss.netty.buffer.AbstractChannelBuffer.checkReadableBytes(AbstractChannelBuffer.java:657)
at org.jboss.netty.buffer.AbstractChannelBuffer.readInt(AbstractChannelBuffer.java:272)
at PushServer.Netty.PushClientHandler.messageReceived(PushClientHandler.java:33)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)

有什么想法吗?

最佳答案

也许您的管道中没有解码器?即使你的同伴写入了 4 个字节,你得到的也可能少于 4 个字节,因此获得 IOOBE 的机会很高。实际上,a section in the official user guide解释了完全相同的情况。

关于java - Netty 的 ChannelBuffer.read 出现奇怪的 indexOutOfBound 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com