我正在测试Http connection
,我发现这种行为很奇怪。 I want to test whether the http connect will continue after network is enabled/disabled
。我测试这个的唯一方法是禁用网络适配器。
例如,在我按下按钮以启动http连接之前,我首先禁用网络适配器,在代码执行http.connect()
之后,我重新启用网络适配器(在允许的超时内),但是最后,超时仍然被抛出,我以为连接在超时之前仍然有效?
你们如何处理这个问题,因为现在移动应用程序(android,IOS)需要在短时间内无法使用3G时克服大量网络。
答案 0 :(得分:1)
是和否。
实际上,这取决于许多不同的组件,答案非常难。
一个工作示例:考虑建立网络连接,然后关闭并重新启动。仍有数据包在路上并在重启后到达目标。现在,TCP中的纠错系统可能只是赶上并继续连接。从计算机上卸下以太网电缆并在几秒钟后重新连接,您将看到它的工作原理。但是:通常移动设备会为重新连接获取新的IP,这使得这种情况变得不可能。
在您的设备和网络之间有许多组件,包括路由器,透明代理,防火墙等。所有这些都有不同的超时,一些发送的消息可以停止或断开连接,有些则没有。有些甚至阻止此类消息。所以尽管它可能不可靠。
您的示例:当您在网络关闭时执行connect()
时,我会发现通常会立即拒绝。但也许DNS会导致延迟,所以你会得到超时。我怀疑在线路重新上线的情况下,停机期间connect()
会自行继续。