android 以太网和wifi共存
来源:互联网 发布:网民网络素养教育工作 编辑:程序博客网 时间:2024/05/16 10:51
要解决这个问题,首先必须解决一个网络起来后另一个网络被踢掉的问题,在网络的核心类ConnectivityService.java找到了调用
把nai.asyncChannel.disconnect()函数注释后, 另一个网络不会被踢掉
两个网络可以共存,通过命令dumpsys connectivity,可以看到当前正在使用的网络
通过命令 ip ru 查看当前的路由表,
也可以通过netcfg来查看,通过这个方法有时不准确,最好不要使用
可以看到 wlan0 和以太网是同时存在的,功能已经基本上实现
但是这样存在问题,当wifi先打开的时候,以太网不能连接,通过跟代码发现。EthernetNetworkFactory.java是核心类,这里不会被调用
startNetwork(),在NetworkFactory.java中找到了这个方法的实现
想要调用startNetwork(),就必须调用needNetworkFor(NetworkRequest networkRequest, int score)
关键函数evalRequest,这里有if的的判断,也就是没调用成功就是没用进第一个if的判断,这里把括号里面所有的判断全都都打印出来,发现第二个判断 n.score < mScore 为false,当先连接wifi后 n.score =100,mScore的分数为-1,现在只要找到是哪里把 mScore 设置为 -1,这个问题就可以解决。最终发现是当以太网连接一次后,这个值就被设置为-1,所以第一次开机后先连接wifi,再连接以太网是没有问题的,但是之后只要是先连接wifi,以太网的不能连接的。
LocalNetworkFactory mFactory;LocalNetworkFactory实际上还是继承NetworkFactory, mFactory.setScoreFilter(110)的实现是在NetworkFactory类,把原来的值-1改成110。
这个问题得以解决。
下面就是测试的问题了
通过命令 ip ru flush ,清空所有的路由表
然后通过命令
添加指向eth0的路由规则、指向wlan0的路由规则
ip ru add from 192.168.123.0/24 lookup eth0 把内网设置成以太网
ip ru add from all lookup wlan0 其他的都设置为wlan0
ip ru add from all lookup wlan0 其他的都设置为wlan0
这样就可以切换以太网和wifi,ping 以太网和wifi都能通
阅读全文
1 0
- android 以太网和wifi共存
- android同时使用wifi和以太网
- BT和WIFI共存
- 以太网和wifi协议
- Android 系统下支持wifi和蓝牙共存通讯
- BT 和WIFI的共存
- bt和wifi的共存
- bt和wifi的共存
- 遥控器打不开wifi和以太网
- wifi,以太网
- 蓝牙和WiFi共存技术2 -----
- zigbee和wifi、以太网的区别
- android6.0 wifi和以太网优先级修改
- android listview和scrollview共存
- Android下获取以太网mac地址方法 非wifi
- wifi bt共存设计
- 工业以太网和以太网
- Android 操作以太网,监听网线插拔和以太网开关,设置以太网静态IP等。
- 对滚动视图contentInset自动设置场景的探讨
- Collectoin接口与Map接口的区别
- Java并发容器之阻塞队列简介
- 前端js性能测试工具(JSLitmus)的使用
- LeetCode | 46. Permutations
- android 以太网和wifi共存
- 用DeviceIoControl获取系统磁盘信息
- HDU 2966 KDtree模板
- php 使用 domxpath读写元素
- Spark SQL之queryExecution运行流程解析Logical Plan(三)
- 小M开发_MySql零基础_day170628
- 数据结构和算法
- php_screw 源码加密
- 时间服务器客户端