Android通过WiFi路由下行链路数据和通过移动网络上行数据

Sac*_*pan 6 android network-programming wifi

在android中是否可以通过WiFi路由所有传入的数据流量,并通过移动网络传输所有传出流量.

在stackoverflow上找到答案 如何在Android中为OBD2设备同时使用Wifi和移动数据.但它确实只为一个主机路由数据.

还有一个应用程序SuperDownload使用wifi和移动网络来实现更快的下载速度.我正在尝试做这样的事情.

在Android WiFi和移动网络不能同时工作.是否可以通过生根设备使其工作?(SuperDownload需要root).

Iva*_*van 2

你要做的事并不容易。

首先,您必须保留两个网络接口,这是可能的,但这是一个黑客行为,因为 Android 不支持它。为此,您必须打开电源

connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "feature");
Run Code Online (Sandbox Code Playgroud)

功能名称与您的硬件相关,应该是enableHIPRI。问题是,在您打开接口后,它会在一段时间后关闭,因此您必须每 20-30 秒执行一次 http 请求才能保持它。这样界面就会保持打开状态。

在路由中,您应该添加静态路由

connectivityManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, ipAddressInt);
Run Code Online (Sandbox Code Playgroud)

其中ipAddressInt是您要连接 3G 的地址。通常路由是通过 WiFi 发送的,因此对于您的 GET(通过 WiFi 下载)没有问题,但您应该添加一条上传路由。

现在有两个问题,

  • 首先是这样在3G上DNS解析消失了,你可以在IP上工作,但你必须有一个静态IP的服务器,
  • 其次,我不确定它是否适用于特定端口(这是我此刻唯一的想法......)。

当然,您应该实现另一个线程来保持接口的活动。