2012-01-15 5 views
3

Почему, когда я пытаюсь закрыть канал, я получил бросок ChannelClosedException? Закрытие с Channel.close(), StackTrace Exception в: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

ЗАКРЫТЬ не существует в ChannelFuture. – Dennis

 Смежные вопросы

  • Нет связанных вопросов^_^