服务器第一次无法接收所有消息

时间:2012-07-02 18:52:32

标签: netty

我开发了一个程序,它有两个部分: 一个是客户端:只是发送消息服务器 另一部分是服务器:只接收消息,并将按摩保存到地图中。(键是channelID,值为List,通道发送的所有消息将保存在列表中) 我使用这样的代码:  for (int i = 0; i < 20; i++) { client.sendMessage(new Message(i)); } 如果我是第一次运行客户端,服务器地图中只有2条消息,丢失了18条消息。如果我再次运行客户端,地图中的所有消息都没有丢失。 如果我发送这样的消息:  for (int i = 0; i < 20; i++) { Thread.sleep(50); client.sendMessage(new Message(i)); } 没有消息丢失。 有人打电话告诉我这是什么问题? 感谢

1 个答案:

答案 0 :(得分:1)

写入消息在netty中是异步的,因此您的循环可能在消息实际发送到remotepeer之前完成。确保要么等待所有写入通过调用完成,例如Channel.write(..)。await ..();