在 iOS 上使用 TCP 套接字重新连接的退避算法有什么优势吗?例如,5 秒的最大延迟与 30 秒的最大延迟会对电池使用产生明显影响吗?在我看来,退避算法主要用于避免服务器暂时无法处理负载时出现 DOS。从客户的角度来看,好处似乎并不明显。
最佳答案
退避算法(指数退避)还可以帮助客户端处理服务器上任何持续的拥塞。如果客户端等待 T 秒后服务器正忙,那么下一次,如果在 2T 秒后尝试,它有更多机会到达服务器。这是一个链接:http://en.wikipedia.org/wiki/Exponential_backoff
其次,对于 TCP,服务器上的挂起连接队列也可能已满,在这种情况下,TCP 服务器将隐式丢弃 SYN 数据包(在 Linux/Unix 中)。退避允许客户端有足够的时间,以便 TCP 服务器上的应用程序可以使那些挂起的连接出队(通过调用accept()),从而在队列中为客户端进行退避创建空间。
关于ios - iOS 上的退避算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649906/