我对Android中的网络连接程序有一点疑问。
我的情景是这样的, 我使用3G通过TCP连接到远程服务器。连接后,我启用了Wi-Fi。 Android已切换到WiFi。并且,仍然与服务器连接,意味着没有连接丢弃。
在这里,我想知道一件事。 当N / W从3G切换到Wi-Fi时,Android(或任何其他)设备是否也会更改其IP地址? 如果它改变了它的IP,旧连接是否有效? (意思是,在新IP上,应该再次建立新连接。)
提前致谢。
答案 0 :(得分:2)
我理解的方式是IP地址会改变。当手机打开WiFi时,路由器会为设备分配IP地址。我怀疑Android可能正在重新启动IP堆栈(虽然只是一个猜想),我不记得看到任何类型的“切换”机制让设备拥有相同的IP地址。虽然它在理论上可能是可能的,但我不确定它能做多么复杂:)此外,Android只有一个网络接口卡,所以它不可能保留两个IP地址。如果它切换到WiFi,它只保留Wifi IP地址。
我从我的经验中观察到,这样的情景会失败:
在这种情况下,GET请求失败。
可能的解决方案:
使用此类代码检查网络连接并从那里继续:
if(!isOnline()) {
Log.e("OFFLINEERROR", "No Network Connectivity");
}
public boolean isOnline() {
try {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
} catch(Exception e) {
//Returned a null so no Internet connection!
return false;
}
}
大块转移(这样即使你失去联系,你仍然可以完成转移)。
希望这有帮助。