1

3G Data Session 和 WIFI Direct 可以同时工作吗?如果是这样,那么两个IP地址存在,会不会造成混淆?一个例子:

A使用3G下载视频文件,现在进度50%。现在A选择一张图片,想用WIFIDirect分享给B,这样可以不中断视频文件下载成功吗??说WIFI连接正常,那么A有2个IP地址,在图片分享中,使用哪个IP地址?

4

5 回答 5

2

我在我的 Galaxy Nexus 上运行我自己的 WiFi Direct 应用程序,而我的 3G 是开启的,到目前为止我还没有遇到任何问题。这肯定是因为 WiFi Direct 应用程序正在使用 android.net.wifi.p2p 包。当您通过 3G 获取 IP 时,将使用 android.net.wifi 包。因此,您的设备可以有两个不同的 IP 地址。并且对于图片共享,将使用本地IP。

于 2012-06-08T10:55:52.097 回答
1

我认为不可能有两个同时连接,因为当您打开 WiFi 时,它会自动关闭 3g 并使用 WiFi 作为默认连接。反之亦然。

至少这是我在所有安卓手机上都注意到的行为。

于 2012-04-07T10:59:37.593 回答
0

3G Data Session 和 WIFI Direct 可以同时工作吗?是的...可以工作

这会在不中断视频文件下载的情况下成功吗?是的..

在图片分享中,将使用哪个 IP 地址?我猜是本地IP。虽然没有检查

于 2012-04-07T10:34:32.233 回答
0

您可以使用 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;
}
于 2012-04-09T12:41:34.863 回答
0

虽然Android手机不允许同时使用两个接口,但是可以通过应用开发来实现。我为 Windows 开发了一个下载加速器,它同时使用 WIFI 和以太网接口进行 TCP 连接。

这两个接口只能用于 TCP 连接,具有两个不同的 IP 地址。您可以为 Android 手机开发一个应用程序,该应用程序将首先确定文件的大小(以字节为单位)并在每个接口上发送字节请求。请记住,UDP 连接在并发接口中是不可能的。

于 2014-07-05T23:09:35.790 回答