2

这是代码

                WriteFuture writeFuture = session.write(message);
                writeFuture.addListener(this);
                writeFuture.awaitUninterruptibly();
                sentMessage = writeFuture.isWritten();

在发送消息之前,我将服务器与网络断开(拉线),这样消息就不可能发送出去。但是,sentMessage 无论如何都会返回 true。在wiresharks 输出上,您可以看到三个TCP 重传(显然没有确认)。在更多消息(与第一条消息不同)之后,它将意识到链接已关闭并返回 false。

我认为这是 isWritten() 告诉你数据包是否成功发送,但显然不是这样。我怎么知道包裹是否已经到达?我尝试了 mina 版本 2.0.7 和 2.0.4

4

1 回答 1

0

当消息被推送到内核时,就声明写入成功。这就是套接字的工作方式,您无法知道 TCP 消息何时发送或确认

于 2013-03-23T08:27:48.980 回答