-1

我开发了一个程序,它有两个部分:一个是客户端:只是发送消息服务器另一部分是服务器:只是接收消息,并将消息保存到地图中。(键是频道ID,值是列表,所有消息发送频道将保存在列表中)我使用这样的代码: 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)); } 没有消息丢失。有人打电话告诉我有什么问题吗?谢谢

4

1 回答 1

1

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

于 2012-07-02T19:23:05.163 回答