我经常通过 FTP 连接进行网站开发。也就是说,我使用带有内置 FTP 窗口的代码编辑器和推/拉文件来处理它们,上传更改等。这主要是因为尝试创建本地开发服务器是不合理的,我使用无论如何,如果没有大量工作,太多的计算机就无法实用。
我的麻烦是,我们家的互联网连接并不完全……稳定。它速度快而且非常可靠,但它比我使用过的任何其他连接(它是无线 DSL)更容易出现故障,因此,断开连接的频率太高了。(在这方面,它与 AT&T 的电话通话一样可靠。)在使用 FTP 时,我发现如果它在文件传输过程中断开连接,则可能很难恢复。首先,当连接断开时,它会向服务器保存一个空白文件(这有什么用?)完全破坏了我正在处理的页面,而锦上添花的是,根据时间,vsftpd 会得到本身陷入超时,我必须先通过 SSH 登录并重新启动它,然后才能再次访问该文件。
这个过程本身是有益的,因为它教会了我在客户端建立一些数据保护技术,以防止服务器在断开的连接碰巧挂起或崩溃我的客户端时吃掉我最近的更改。总的来说,这是一个非常失败的情况,我很惊讶我能完成任何工作。
很长很长的上下文,我知道,但我的问题是:是否有一个文件传输协议旨在处理像我这样的“flakey”连接?我想,例如,尝试通过 3G 系留连接传输文件会产生相同的结果,尤其是在旅行时。似乎 FTP 和 SFTP 都依赖于持久连接,并且可以处理丢弃的数据包,但不能通过重新连接处理整个套接字的丢失。在我看来,文件传输守护进程应该能够存储与其交互的用户的状态,从而检测失败的传输并准备好在用户在合理的时间内重新连接时“恢复”。
谢谢,如果有人知道任何事情。我正在认真考虑尝试自己编写这样一个协议(例如,我已经成功地在我的页面上编写了 ajax 来处理错误的连接),但如果已经有可用的解决方案,我不想深入研究.