假设,我有一个 TCP 连接,在我的 3G 网络上进行大量数据传输;我走回家,Android 自动切换到我家的 Wifi。现在现有的连接会发生什么?它只是断开连接吗?或者它会继续,只有新的连接会使用wifi?
另外,如果我离家出走,wifi信号丢失,切换到3g怎么办?猜测连接被丢弃应该是安全的。对于我的应用程序,我需要处理重新连接还是有自动回退解决方案?
提前致谢。
洪波
连接将断开,因为您的设备将出现在不同的 IP 地址上,这就是 TCP 数据包如何找到它们的方式。
除非您对其进行编码,否则没有后备方案,如果您的应用程序花费大量时间在 3G 上,您无论如何都应该这样做。桌面应用程序运行“D'oh!”是完全可以的。当您的 Cable 或 DSL 偶尔出现故障,但 3G 连接经常中断时。
就像您从一个网络中拔出笔记本电脑并插入另一个网络一样,也会发生同样的事情。连接会下降。移动应用程序更有可能遇到掉线/死连接,因此应对其进行相应编码。例如,应用程序可以通过 android.net.ConnectivityManager 注册状态更改。在某些情况下,应用程序可能需要对其下载的任何内容进行完整性检查,以免它们开始尝试渲染损坏的文件。在其他情况下,如果连接是通过 3G 下载的,那么下载某些类型的数据(例如大文件)会很糟糕。
没有。您应该枚举所有当前的 IP 地址并在不同的套接字上绑定到它们中的每一个。并在网络状态/IP 地址发生变化时订阅可达性(Android 的一种)通知。代码也应该在 Android 中运行。在这个要点中查看我的多路径示例:https ://gist.github.com/avesus/fdb465b60a4f5204845c