2013-03-08 14 views
2

這是代碼米納writefuture返回書面=真儘管未能

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

發送消息之前,我從網絡斷開(拉電纜)服務器,以便不可能被髮送的消息。然而,sentMessage無論如何都會返回true。在wiresharks輸出你可以看到三個TCP重傳(顯然沒有ack)。在多了幾條消息(與第一條消息不一樣)後,它會意識到鏈接已關閉並返回false。

我以爲這是寫()告訴你,如果數據包發送成功,但顯然不是這樣。我怎麼知道包是否已經到達?我試過邁納版本2.0.7和2.0.4

回答

0

當消息被推送到內核時,寫入成功被聲明。 這是如何套接字工作,你不知道什麼時候TCP消息發送或acked