2

これがコードです

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

メッセージを送信する前に、メッセージが送信されないように、サーバーをネットワークから切断します (ケーブルを引きます)。ただし、 sentMessage はとにかく true を返します。Wiresharks の出力では、3 つの TCP 再送信が表示されます (明らかに ack はありません)。さらにいくつかのメッセージ (最初のメッセージとは異なります) の後、リンクがダウンしていることに気づき、false を返します。

これ isWritten() は、パケットが正常に送信されたかどうかを示していると思いましたが、明らかにそうではありません。パケットが到着したかどうかを知るにはどうすればよいですか? mina バージョン 2.0.7 と 2.0.4 を試してみました

4

1 に答える 1

0

メッセージがカーネルにプッシュされると、書き込み成功が宣言されます。これは、ソケットがどのように機能するかです。TCP メッセージがいつ送信または ACK されたかを知ることはできません

于 2013-03-23T08:27:48.980 に答える