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