java - org.jboss.netty.buffer.ChannelBufferInputStream.available() 中的错误?

标签 java netty

ChannelBufferInputStream.available() 方法是:

@Override
public int available() throws IOException {
    return endIndex - buffer.readerIndex();
}

如果在输入流初始化后写入缓冲区,这不会中断吗?

这实际上不应该是

return buffer.writerIndex() - buffer.readerIndex();

我正在尝试做这样的事情: 初始化缓冲区和流并对 ChannelBuffer 进行读/写。我在这里缺少什么?

final ChannelBuffer _channelBuffer = ChannelBuffers.dynamicBuffer();

final ChannelBufferOutputStream _outputStream = new ChannelBufferOutputStream(_channelBuffer);

final ChannelBufferInputStream _inputStream = new ChannelBufferInputStream(_channelBuffer);

编辑: 根据 ChannelBufferedInputStream 的构造函数文档:“创建一个新的流,从当前 readerIndex 开始并以当前 writerIndex 结束的指定缓冲区读取数据。”

在这种情况下,这是有道理的。但有没有办法实现我想要做的事情呢?有一个后备缓冲区,读取操作等待写入操作完成。

最佳答案

我需要一个流来拉出 AudioInputStream,不幸的是它在单独的线程中运行,但我找到了使用 PipedInputStream/PipedOutputStream 的解决方法。效果很好。

基本上,messageReceived 将我的字节转储到 PipedOutputStream 中,而我的音频线程从 PipedInputStream 读取并写入我的 SourceDataLine。

关于java - org.jboss.netty.buffer.ChannelBufferInputStream.available() 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840560/

相关文章:

java - 使用 foreach 在单行/表中显示多个列表

Java - 反向词序, vector

java - 套接字消息被netty分割

java - Netty 4.0 ByteBuf keep() 使用

java - 比较两个相同列表时 assertEquals 失败

java - LibGDX Sprite 上的黑色细边框

java - Jboss Netty - 无法连续发送数据?

java - 如何在 Netty 上的处理程序之间共享内容?

java - 使用 Apache HttpClient API 的 Wpad 文件进行代理设置

scala - 使用Play.async会产生什么效果,因为Play使用非阻塞的Netty