0

netty 3.x、nio モデル:

netty IO書き込みスレッドがWritableByteChannel.write(ByteBuffer)最後に呼び出され、nettyはそれが正常に書き込まれたと見なしますが、実際にはバイトはソケット出力バッファに書き込まれます.

場合によっては、物理ネットワーク リンクが切断されますが、この書き込み操作は例外をスローせず、0 より大きい整数を返します (いくつかのバイトが書き込まれていることを意味します)。したがって、netty fireWriteComplete の場合、一部のバイトが実際にリモートに書き込まれたことを意味するわけではありません。

一部のバイトがリモートに正常に書き込まれた場所を確認するにはどうすればよいですか?

ハートビート メカニズムは、ハートビートの ack をいつ受信したかを知ることができますが、ハートビート メカニズムは別の問題を引き起こします。

4

1 に答える 1

0

手短に言えば... できません。より長い答えは、何かが受信された場合にメッセージを送信して「確認応答」するなどのプロトコルロジックに実装することです。

于 2013-05-16T09:22:58.593 に答える