我正在设计一个文件同步应用程序(如 DropBox)。客户端在端口 443 上与服务器保持持久的安全 (SSL) TCP 套接字。每当在客户端上创建/更改/删除文件时,包含相关数据的数据包就会通过套接字发送到服务器,服务器对其进行处理更新服务器上的文件。类似地,当服务器上发生更改时,它会将相关数据发送到客户端,然后客户端更新本地副本。
当服务器位于本地计算机或本地 LAN 上时,这绝对可以正常工作。我担心的是当客户端位于不可靠的网络上时。所以我的问题是设计这样的应用程序时需要考虑的最佳实践和问题是什么?
例如,当在客户端上创建文件时,客户端是否应该将数据发送到服务器并忘记它,或者是否应该在一定时间内等待服务器的确认,如果失败则再次发送数据?以及什么样的认可?
TCP 抽象化了许多网络问题:数据包总是按顺序到达,如果服务器不确认已收到数据包,则会重新发送。不可靠的网络将导致流量变慢,因为必须重新发送数据包。
如果连接无论如何都丢失,您的 read() 和 write() 调用将返回错误返回值,因此您必须处理该问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)