2012-01-15 14 views
3

なぜチャネルをクローズしようとしているときに、ChannelClosedExceptionがスローされましたか? はChannel.close()、例外のスタックトレースを閉じる:Netty:ClosedChannelExceptionがチャネルを閉じるとき

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) 

答えて

3

私はあなただけでこれを無視すべきだと思います。残りのバイトをチャンネルに書き込もうとしたときにチャンネルが既に閉じられていると言っただけです。だから心配することはありません。

+0

私は同じ問題を抱えています。それを閉じる前に残りのバイトがチャネルに書き込まれるようにする方法はありますか?私は 'ch.write(msg);のようなものを持っています。 ch.close(); ' – Dennis

+0

はい... ChannelFutureを使用します。 ch.write(msg).addListener(ChannelFuture.CLOSE); –

+0

CLOSEはChannelFutureに存在しません。 – Dennis

関連する問題