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