我正在使用C编写的Linux客户端服务器应用程序中使用TCP将数据复制到多个从属副本,我想知道如何处理某些副本的意外临时关闭(它可能是unix进程崩溃或硬件掉电)。从丢失的TCP连接中恢复传输
当我向内核发出write()系统调用时,成功返回意味着数据被复制到套接字,但并不意味着接收端得到了的数据。如果目标电源关闭后再通电,则数据必须从丢失数据的位置重新发送(在建立新的TCP连接后)复制副本。假设我正在处理大量数据,并且不保留已发送的数据(即write()系统调用返回成功)。我只保留待发送的数据。
当副本从意外关闭中恢复并再次连接时,如何从内核获取已写入套接字的数据,但在目标主机上不是'ack' - 尚未?或者换句话说,我如何从丢失TCP连接中恢复并重新建立客户端和服务器之间从停止点开始的传输?
[预写日志协议](http://en.wikipedia.org/wiki/Write-ahead_logging)用于确保安全。 – 2013-03-21 15:04:50