3

我正在测试Http connection,我发现这种行为很奇怪。I want to test whether the http connect will continue after network is enabled/disabled. 我对此进行测试的唯一方法是禁用网络适配器。

例如,在我按下按钮启动http连接之前,我先禁用了网络适配器,在代码执行之后http.connect(),我重新启用了网络适配器(在允许的超时内),但最后仍然抛出超时,我认为连接在超时之前仍然有效吗?

你们如何处理这个问题,因为现在移动应用程序(android,IOS)在短时间内无法使用 3G 时需要克服大量网络故障。

4

1 回答 1

1

是和不是。

实际上,这取决于许多不同的组件,因此很难回答。

一个工作示例:考虑建立网络连接,然后它关闭并重新启动。途中仍有数据包,重启后到达目标。现在有可能 TCP 中的纠错系统简单地赶上并继续连接。从计算机上拔下以太网电缆并在几秒钟后重新连接它,您将看到这是可行的。但是:通常移动设备会获得一个新的 IP 用于重新连接,这使得这不可能。

在您的设备和网络之间有许多组件,包括路由器、透明代理、防火墙等。所有这些都有不同的超时时间,有些发送的消息可以停止或断开连接,有些则不能。有些甚至阻止此类消息。因此,尽管有可能,但它并不可靠。

您的示例:当您connect()在网络中断时执行操作时,我通常会期望立即拒绝。但也许 DNS 在这里会导致延迟,所以你会得到一个超时。我怀疑在某些情况下,connect()当线路再次联机时,停机期间的 a 会自行继续。

于 2013-01-05T13:00:34.543 回答