我在无线和 3g 网络中使用原始套接字。
在我测试时,客户端连接的服务器已启动并 24/7 运行,
但 connect() 已实现,因此考虑到停机时间它会超时。
我面临的问题是,connect() 在无线或 3g 中经常需要很长时间(超过 5 秒或 10 秒)。
对于有线连接(与我正在测试的无线在同一个网络中:有线和无线在家里的路由器后面),connect() 几乎立即完成。
我正在测试 connect() 的服务器与家庭网络有 4-5 毫秒的延迟。
并且服务器没有接受除我之外的任何其他连接请求(它只是一个测试服务器)
- 我之前的网络经验是在有线环境下的,我对此感到非常惊讶。
无线和 3g 的 connect() 调用是否会出现这种延迟? - 我最好在短超时的情况下多次重试connect(),还是在长时间超时的情况下尝试一次connect()?如果我什至可以尝试,我将如何估计最佳超时/重试?
如果重要,服务器正在运行 linux(debian)。我使用的 API 是 bsd 套接字。
-- 编辑 --
在 3g 的进一步测试中,每当客户端第一次连接时,都会发生慢速连接。
因此,当客户端第一次连接时,它很慢,如果他在不到一定的持续时间(例如 1 分钟)内断开连接并再次连接,则连接完成很快。
但是,如果客户端在长时间停顿(10 分钟)后断开连接并重试连接,则连接再次变慢。
我怀疑它与“路由到 ip”有关。