Java Netty:关闭通道时发生ClosedChannel异常

Java Netty:关闭通道时发生ClosedChannel异常,java,netty,channels,Java,Netty,Channels,为什么当我试图关闭频道时,却抛出了ChannelClosedException? 使用Channel.close()关闭,异常的堆栈跟踪: java.nio.channels.ClosedChannelException at org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:645) at org.jboss.netty.channel.socket.nio.NioWor

为什么当我试图关闭频道时,却抛出了ChannelClosedException? 使用Channel.close()关闭,异常的堆栈跟踪:

java.nio.channels.ClosedChannelException
    at org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:645)
    at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:601)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60)
    at org.jboss.netty.channel.Channels.close(Channels.java:720)
    at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:200)
    at ru.greencubes.player.PlayerWorkerThread.closeConnection(PlayerWorkerThread.java:107)
    at ru.greencubes.player.PlayerWorkerThread.shutDown(PlayerWorkerThread.java:282)
    at ru.greencubes.player.NetworkPlayerThread.disconnect(NetworkPlayerThread.java:1289)
    at ru.greencubes.player.NetworkPlayerThread.disconnect(NetworkPlayerThread.java:1272)
    at ru.greencubes.server.Server.run(Server.java:1590)
    at ru.greencubes.server.ServerThread.run(ServerThread.java:12)

我认为你应该忽略这一点。它只是告诉您,当它试图将剩余字节写入通道时,通道已经关闭。所以没什么好担心的。

我也遇到了同样的问题。有没有办法确保在关闭通道之前将剩余字节写入通道?我有类似于
ch.write(msg)的东西;ch.close()是。。。利用未来。ch.write(msg).addListener(ChannelFuture.CLOSE);CLOSE在ChannelFuture中不存在。很抱歉,它是ChannelFutureListener.CLOSE我的问题似乎是另一个问题,我们在这里讨论: