2013-05-16 29 views
0

網狀3.x中,NIO型號:網狀fireWriteComplete沒有寫入遠程

的網狀IO寫線程將調用WritableByteChannel.write(ByteBuffer)最後,網狀會考慮它成功地寫入,但實際上字節寫入套接字輸出緩衝區。

在某些情況下,物理網絡連接斷開,但這個寫入操作不會拋出異常,即使返回一個大於0的整數(意味着寫入了一些字節),這個WritableByteChannel不會檢測到鏈接被及時中斷。所以netty fireWriteComplete時,並不意味着一些字節真的寫入遠程。

我怎麼知道某些字節寫入遠程成功的地方?

我知道心跳機制可以告訴心跳接收的時間,但心跳機制會給我帶來另一個問題。

回答

0

爲了縮短...你不能。較長的答案是在協議邏輯中實現它,比如發送和「確認」消息,如果有東西被收到。