Android 以太网子网掩码长度 bug 修复
生活随笔
收集整理的這篇文章主要介紹了
Android 以太网子网掩码长度 bug 修复
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前言
這個(gè)bug說起來還是我自己搞出來的,之前每次版本遷徙都是參考修改記錄同步移植以太網(wǎng)這塊,
所以從一開始就有這個(gè)問題。
mStaticIpConfiguration.ipAddress = new LinkAddress(InetAddress.getByName(text), 24);
每次應(yīng)用層設(shè)置都是固定值 24 ,導(dǎo)致 framework 接收到的就是錯(cuò)誤值。正確的做法為根據(jù)設(shè)置的
子網(wǎng)掩碼值去計(jì)算對應(yīng)長度。
子網(wǎng)掩碼長度對照表
關(guān)于IP地址,子網(wǎng)掩碼,子網(wǎng)前綴長度,路由表的的算法介紹可參考這篇
IP地址,子網(wǎng)掩碼,子網(wǎng)前綴長度,路由表的的算法
解決辦法
編寫算法計(jì)算子網(wǎng)掩碼長度
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實(shí)現(xiàn)子網(wǎng)掩碼轉(zhuǎn)換為網(wǎng)絡(luò)標(biāo)識位
總結(jié)
以上是生活随笔為你收集整理的Android 以太网子网掩码长度 bug 修复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stata数据处理: 面板数据填充和补漏
- 下一篇: android sina oauth2.