Android mobile/wifi 数据连接并发问题

msm8660 2014-12-12 04:21:25
现在有个需求,需要mobile和wifi同时数据连接,做并发业务。
参考了以下博客:
http://blog.csdn.net/yshe_xun/article/details/9170935

我通过以下方式做的:
1、在Android设置中关闭Wifi
2、启动移动网络数据业务
3、通过命令手动启动wifi服务(具体步骤,参考上面的链接)
4、能同时获取到Wifi和mobile的IP地址

在这种情况下,通过mobile连接,是可以直接上网的,通过wifi连接是不能上网的,
通过浏览器,打开网页就可以验证的,抓取tcpdump日志,用wireshark分析就行了。

不能通过wifi上网,我分析后,发现时DNS问题,因为在Android本身设计中有两个属性net.dns1,net.dns2作为
全局的系统属性,每次mobile拨号建立数据连接时,会更新路由信息,mobile会被默认为默认连接,同时会更新
dns1和dns2的值,所以这时,修改dns1的地址为wifi的dns1地址,那么wifi就能上网了(需要关闭移动网络数据连接),
那么怎么验证wifi和mobile数据业务并发呢?

我写了个apk,通过2个http连接,访问2个不同的网站,获取信息验证。
那么问题来了:
1、http 好像不能通过接口绑定IP地址,所以http连接数据路由从哪个网口出去?
2、通过linux策略路由配置,强制把http的目的地址通过指定网口路由出去,我测试验证了,好像还有问题?

另外,在wifi/mobile并发数据连接时,同时ping,是能ping通的。

谁能够给点思路讨论,分析下。

...全文
214 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
msm8660 2014-12-16
  • 打赏
  • 举报
回复
引用 2 楼 birdsaction 的回复:
你是想同时开启 wifi 和3g网络 接受发送数据?
是的,就是双网卡(wlan和rmnet)。 在启动移动网络数据业务时,我在系统设置中把,wifi关闭了,通过adb shell启动的wpa_supplicant,把wifi启动了, 同时能获取到ip,gw,dns。由于绕过了framework层,没有通过connectivityservice更新路由信息(包括dns),不过我手动 通过setprop net.dns1设置的wifi的dns地址,net.dns2为mobile的dns地址,通过浏览器可以上网的,用wireshark抓包发现是 通过rmnet口出去的。 现在我写了个apk,做两个http连接,一个http连接走wifi网卡出去,另一个http连接走rmnet网卡出去, 但是发现rmnet口出去的连接时成功的,另一个连接不成功,也不确定是否从wifi口出去的,从wireshark上日志分析, 时从wifi的ip地址出去的tcp消息,但是服务端没有回复,导致超时报错。如果把移动网络的数据业务关闭,wifi的http连接就能成功。
Birds2018 2014-12-16
  • 打赏
  • 举报
回复
你是想同时开启 wifi 和3g网络 接受发送数据?
msm8660 2014-12-16
  • 打赏
  • 举报
回复
update...

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧