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

时间:2015-07-14 04:52:18

标签: android network-programming wifi

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

在stackoverflow上找到答案 How Wifi and Mobile Data both work simultaneously in android for OBD2 device。但它确实只为一个主机路由数据。

还有一个应用SuperDownload,它使用wifi和移动网络来实现更快的下载速度。我试图做这样的事情。

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

2 个答案:

答案 0 :(得分:1)

我认为这根本不可能。想一想,你的目的地如何找到交付它的答案路径?

让我更清楚一点,当您尝试从网络(例如网页)获取内容时,您应该将您的IP地址和目标IP地址放入数据包并将其发送到网络(wifi或3g) )并且网络将其路由到您的目的地。当您的响应准备就绪后,目标将撤消该过程,并将您的IP地址作为目标地址及其IP地址作为源,并将其释放到网络中。同样,通过使用此信息网络将找到您并将数据包发送给您。 因此,您永远不能向网络发送信息(例如wifi)并从另一个网络(例如3g)接收答案。

注意:如果所有中间路由器都了解了您的目标(向两个不同的网络发送和接收),则可以这样做。目前,在一些专门用于边缘路由器的路由协议中,通常由政府使用,类似于你的目标的工作是让他们克服传输媒体的有限速度,例如:光纤(超过10/100 gbps)。

答案 1 :(得分:1)

你会做什么并不容易。

首先,你必须保持两个网络接口,这是可能的,但它是一个黑客,因为Android不支持它。要做到这一点,你必须打开

connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "feature");

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

到路线,你应该添加静态路线

connectivityManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, ipAddressInt);

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

现在有2个问题,

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

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