Android 以太网子网掩码长度 bug 修复
生活随笔
收集整理的這篇文章主要介紹了
Android 以太网子网掩码长度 bug 修复
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
這個bug說起來還是我自己搞出來的,之前每次版本遷徙都是參考修改記錄同步移植以太網這塊,
所以從一開始就有這個問題。
mStaticIpConfiguration.ipAddress = new LinkAddress(InetAddress.getByName(text), 24);
每次應用層設置都是固定值 24 ,導致 framework 接收到的就是錯誤值。正確的做法為根據設置的
子網掩碼值去計算對應長度。
子網掩碼長度對照表
關于IP地址,子網掩碼,子網前綴長度,路由表的的算法介紹可參考這篇
IP地址,子網掩碼,子網前綴長度,路由表的的算法
解決辦法
編寫算法計算子網掩碼長度
private int calcNetMaskInt(String netMask) {Log.d("cnetMask", "netMask =" + netMask);StringBuffer sbf;String str;int prefixLength = 0, count = 0; String[] split = netMask.split("\\.");for (int n = 0; n < split.length; n++) {sbf = toBin(Integer.parseInt(split[n]));str = sbf.reverse().toString();//Log.e("net", split[n] + "===" + str);count = 0;for (int i = 0; i < str.length(); i++) {i = str.indexOf('1', i); if (i == -1) {break;}count++; }prefixLength += count;}Log.e("cnetMask", "netMask prefixLength=" + prefixLength);return prefixLength; }參考
java實現子網掩碼轉換為網絡標識位
總結
以上是生活随笔為你收集整理的Android 以太网子网掩码长度 bug 修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stata数据处理: 面板数据填充和补漏
- 下一篇: Android开发实验-- 电话拨号器实