I have created a game server using netty 3.5.8. At first, there is not any problem with sending data from server to client. But when server operates for a while, there are many exceptions [java.nio.channels.ClosedChannelException] when I write data to the client channel.

Anyone has gotten this exception before. Is there any tip to fix this? I think about cache buffer cause this.

My code sample like this:

ChannelBuffer bff = ChannelBuffers.buffer(18);
bff.writeByte(Events.S_SERVER_PUSH);  
bff.writeByte((byte)0);
bff.writeInt(idRoom);            
bff.writeInt(playerCnt);
bff.writeInt(gameCnt);
bff.writeInt(freePlayer);
channel.write(bff);

Exception: java.nio.channels.ClosedChannelException

java.nio.channels.ClosedChannelException
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.cleanUpWriteBuffer(AbstractNioWorker.java:784)
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:507)
        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:129)
        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:66)
        at org.jboss.netty.channel.Channels.write(Channels.java:733)
        at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:71)
        at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60)
        at org.jboss.netty.channel.Channels.write(Channels.java:712)
        at org.jboss.netty.channel.Channels.write(Channels.java:679)
        at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:248)
       at myclass.SendPushData(GameRoom.java:231)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMess
Edit
Report