我正在开发用C for Linux编写的客户机服务器应用程序,在该应用程序中,我使用TCP将数据复制到多个从副本,我想知道如何处理一些副本意外的临时关闭(可能是unix进程崩溃或硬件断电)。如果目标被关闭,然后打开电源,则必须(在建立了新的TCP连接之后)将数据从丢失数据的位置重新发送到副本。当副本从意外关闭中恢复并再次连接时,如何从内核获得写入套接字的数据,但没有在目标主机上进行“ack”?
换句话说,如何从TCP连接的丢失中恢复,并从停止的位置重新建立客户机和服务器
我一直认为,如果不实现心跳,就没有办法知道TCP连接的一端是否意外死亡。如果进程只是在一端被终止,并且没有正常退出,那么套接字就无法发送FIN或让另一端知道它已关闭。即使我终止了我那一端的进程,它也能正常工作,而且我的应用程序对它绝对没有心跳。
那么,它如何能够检测到我何时终止了进程呢?我的应用程序在Windows Server 2003上运行,订单服务器在Suse Linux Enterprise server 10上。Windows是否检测到与套接字关联的进程不再处