Android以太网和wifi共存并设置Wif优先级最高
2021-07-13 本文已影响0人
Lazy1
- 在Android5.0以后网络请求的优先级,不在以devcie下的config文件配置的顺序为主,而根据网络的连接状态,等其他因素综合动态评分机制,进行判断优先级。
- 默认的优先级为
- Wifi初始分值为60(WifiStateMachine.java);
- Ethernet初始分值为70(EthernetNetworkFactory.java);
- Mobile network初始分值为50(DataConnection.java)
- bt-pan初始分值为69(BluetoothTetheringNetworkFactory.java):
在实际运行中,还会根据网络的实时状态调整分值,所以这里可以看到Android系统默认是以太网的优先级最高,wif最高优先级为60大于60也是60,以太网根据网卡的up和down状态,把分值设置为70(NETWORK_SCORE)或0。
- 所以如果需要达到,默认设置wif为优先级最高,需要修改
ConnectivityService
的nai.asyncChannel.disconnect()
注释,达到两个网络可以共存,
private void teardownUnneededNetwork(NetworkAgentInfo nai) {
if (nai.numRequestNetworkRequests() != 0) {
for (int i = 0; i < nai.numNetworkRequests(); i++) {
NetworkRequest nr = nai.requestAt(i);
// Ignore listening requests.
if (nr.isListen()) continue;
loge("Dead network still had at least " + nr);
break;
}
}
// nai.asyncChannel.disconnect();
}
1.ip route show //显示路由
2.ip rule list //显示路由表规则优先级
3.ip route flush cache //刷新路由缓存
4.ifconfig usb0 down 关闭usb0网络接口
5.ifconfig usb0 up 打开usb0网络接口
- svc wifi enable 打开wif
7.svc wifi disable 关闭wif
8 ip route get 47.110.189.28 查看某个IP访问的路由 - cat /proc/net/route
- ip route list table main
此时只是wif和以太网能共存,但是这个时候由于以太网的优先级比,wif优先级高,因此我们需要改动EthernetNetworkFactory
的NETWORK_SCORE小于60即可,还需要将WifiStateMachine的优先级设置为Integer.MAX_VALUE,这样确保wif的优先级为最高