3G Data Session 和 WIFI Direct 可以同时工作吗?如果是这样,那么两个IP地址存在,会不会造成混淆?一个例子:
A使用3G下载视频文件,现在进度50%。现在A选择一张图片,想用WIFIDirect分享给B,这样可以不中断视频文件下载成功吗??说WIFI连接正常,那么A有2个IP地址,在图片分享中,使用哪个IP地址?
3G Data Session 和 WIFI Direct 可以同时工作吗?如果是这样,那么两个IP地址存在,会不会造成混淆?一个例子:
A使用3G下载视频文件,现在进度50%。现在A选择一张图片,想用WIFIDirect分享给B,这样可以不中断视频文件下载成功吗??说WIFI连接正常,那么A有2个IP地址,在图片分享中,使用哪个IP地址?
我在我的 Galaxy Nexus 上运行我自己的 WiFi Direct 应用程序,而我的 3G 是开启的,到目前为止我还没有遇到任何问题。这肯定是因为 WiFi Direct 应用程序正在使用 android.net.wifi.p2p 包。当您通过 3G 获取 IP 时,将使用 android.net.wifi 包。因此,您的设备可以有两个不同的 IP 地址。并且对于图片共享,将使用本地IP。
我认为不可能有两个同时连接,因为当您打开 WiFi 时,它会自动关闭 3g 并使用 WiFi 作为默认连接。反之亦然。
至少这是我在所有安卓手机上都注意到的行为。
3G Data Session 和 WIFI Direct 可以同时工作吗?是的...可以工作
这会在不中断视频文件下载的情况下成功吗?是的..
在图片分享中,将使用哪个 IP 地址?我猜是本地IP。虽然没有检查
您可以使用 requestRouteToHost API 进行路由,即如果您知道存储视频的主机地址,则视频下载可以如下进行:
ConnectivityManager connManager = null;
if(mContext != null) {
connManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfos = connManager.getAllNetworkInfo();
for(int loop_index=0;loop_index<netInfos.length;loop_index++){
switch(netInfos[loop_index].getType())
{
case ConnectivityManager.TYPE_MOBILE_HIPRI:
if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED){
connectionSet = connManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, lookupHost("Video Stored Address"));
}
break;
case ConnectivityManager.TYPE_WIFI:
if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED)
break;
default:
if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED)
break;
}
}
}
private static int lookupHost(String hostname) {
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
return -1;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
| ((addrBytes[2] & 0xff) << 16)
| ((addrBytes[1] & 0xff) << 8)
| (addrBytes[0] & 0xff);
return addr;
}
虽然Android手机不允许同时使用两个接口,但是可以通过应用开发来实现。我为 Windows 开发了一个下载加速器,它同时使用 WIFI 和以太网接口进行 TCP 连接。
这两个接口只能用于 TCP 连接,具有两个不同的 IP 地址。您可以为 Android 手机开发一个应用程序,该应用程序将首先确定文件的大小(以字节为单位)并在每个接口上发送字节请求。请记住,UDP 连接在并发接口中是不可能的。