Exception java.nio.les canaux.ClosedChannelException lors de l'écriture de client canal

J'ai créé un serveur de jeu à l'aide de netty 3.5.8.
Au premier abord, il n'y a aucun problème avec l'envoi de données depuis le serveur vers le client.
Mais lorsque le serveur fonctionne pendant un certain temps, il y a de nombreuses exceptions [java.nio.channels.ClosedChannelException] quand j'écris des données au client de canal.

Quelqu'un a eu cette exception avant. Est-il une astuce pour résoudre ce problème?
Je pense que sur la mémoire cache la cause de cela.

Mon exemple de code comme ceci:

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.les canaux.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.unfoldAndFireMessageReceived(FrameDecoder.java:458)
at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:439)
at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:84)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:471)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:332)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
L'exception soulève de plus en plus fréquemment quand j'écris pour envoyer des données multi-clients dans la boucle for
Merci De Tube. Ce type de Code (PlayerInfo p:this.players.values()){ ChannelBuffer bff = ChannelBuffers.de la mémoire tampon(18); bff.writeByte(Événements.S_SERVER_PUSH); bff.writeByte(typePush);bff.writeInt(idRoom); bff.writeInt(idGame); bff.writeInt(gameCnt*2); bff.writeInt(freePlayer); p.getChannel().écrire(bff); Thread.sleep(100); } }
Question connexe - stackoverflow.com/questions/24975455/...

OriginalL'auteur Tuan Huy | 2012-12-25