套接字编程最佳实践?

Tar*_*ill 2 sockets tcp

我正在设计一个文件同步应用程序(如DropBox).客户端在端口443上与服务器保持持久的安全(SSL)TCP套接字.无论何时在客户端上创建/更改/删除文件,包含相关数据的数据包都通过套接字发送到服务器,服务器将其处理为更新服务器上的文件.类似地,当服务器上的某些内容发生变化时,它会将相关数据发送到客户端,然后客户端会更新本地副本.

当服务器在本地计算机上或本地LAN上时,这非常正常.我担心的是当客户端处于不可靠的网络时.所以我的问题是在设计这样的应用程序时需要考虑的最佳实践和问题是什么?

例如,假设在客户端上创建文件时,客户端是仅将数据发送到服务器并忘记它,还是应该在某个时间段内等待服务器的确认,否则会再次发送数据?什么样的承认?

Sjo*_*erd 5

TCP抽象出许多网络问题:如果服务器不确认已收到数据包,则数据包总是按顺序到达并重新发送.不可靠的网络将导致流量变慢,因为必须重新发送数据包.

如果连接丢失了,read()和write()调用将返回错误返回值,因此您必须处理它.