我正在使用C編寫的Linux客戶端服務器應用程序中使用TCP將數據複製到多個從屬副本,我想知道如何處理某些副本的意外臨時關閉(它可能是unix進程崩潰或硬件掉電)。從丟失的TCP連接中恢復傳輸
當我向內核發出write()系統調用時,成功返回意味着數據被複制到套接字,但並不意味着接收端得到了的數據。如果目標電源關閉後再通電,則數據必須從丟失數據的位置重新發送(在建立新的TCP連接後)複製副本。假設我正在處理大量數據,並且不保留已發送的數據(即write()系統調用返回成功)。我只保留待發送的數據。
當副本從意外關閉中恢復並再次連接時,如何從內核獲取已寫入套接字的數據,但在目標主機上不是'ack' - 尚未?或者換句話說,我如何從丟失TCP連接中恢復並重新建立客戶端和服務器之間從停止點開始的傳輸?
[預寫日誌協議](http://en.wikipedia.org/wiki/Write-ahead_logging)用於確保安全。 – 2013-03-21 15:04:50