当在3G和WiFi之间切换时,现有连接会发生什么?

18
假设我有一个TCP连接正在使用3G网络进行大量数据传输,此时我走回家,Android会自动切换到我的家庭WiFi网络。现在这个已经存在的连接会发生什么情况?它会简单地中断吗?还是它将继续保持连接,只有新的连接会使用WiFi?
另外,如果我离开家,WiFi信号丢失并切换到3G网络,这个连接应该就已经断开了。对于我的应用程序,我需要处理重新连接,还是有自动回退解决方案?
谢谢。
洪波

有趣的问题。这对我来说值得一加一分;) - Sephy
3个回答

9
连接会中断,因为您的设备将出现在不同的IP地址上,这就是TCP数据包寻找其路由的方式。
除非您编写代码进行回退,否则没有其他解决办法。如果您的应用程序经常在3G上运行,那么您应该编写代码进行回退。桌面应用程序偶尔会因为电缆或DSL出现偶发故障而出现问题,但3G连接通常会断开。

1

如果您从一个网络中拔出笔记本电脑并插入另一个网络,那么会发生同样的事情。连接将会断开。移动应用程序更有可能遇到掉线/死连接,因此它们应该进行相应编码。例如,应用程序可以通过android.net.ConnectivityManager注册状态更改。在某些情况下,应用程序可能需要对其下载的任何内容进行完整性检查,以确保它们不会开始尝试呈现损坏的文件。在其他情况下,如果连接是通过3G,则下载某些类型的数据(例如大文件)将是不好的做法。


0

没有什么特别的。您应该枚举所有当前IP地址,并在不同的套接字上绑定到每个IP地址。并订阅可达性(一种适用于Android的)通知,以便在网络状态/IP地址更改时进行更新。代码应该在Android上也能正常工作。请参见我在此代码片段中的多路径示例:https://gist.github.com/avesus/fdb465b60a4f5204845c


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接