Android 以太网子网掩码长度 bug 修复

简介: Android 以太网子网掩码长度 bug 修复

前言


这个bug说起来还是我自己搞出来的,之前每次版本迁徙都是参考修改记录同步移植以太网这块,


所以从一开始就有这个问题。

mStaticIpConfiguration.ipAddress = new LinkAddress(InetAddress.getByName(text), 24);


每次应用层设置都是固定值 24 ,导致 framework 接收到的就是错误值。正确的做法为根据设置的


子网掩码值去计算对应长度。


子网掩码长度对照表


sTm9PI.png


关于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实现子网掩码转换为网络标识位

目录
相关文章
|
7月前
|
Android开发
【Bug】Android resource linking failed和error: failed linking references.
【Bug】Android resource linking failed和error: failed linking references.
|
2月前
|
Java 程序员 开发工具
Android|修复阿里云播放器下载不回调的问题
虽然 GC 带来了很多便利,但在实际编码时,我们也需要注意对象的生命周期管理,该存活的存活,该释放的释放,避免因为 GC 导致的问题。
40 2
|
2月前
|
设计模式 Java Android开发
安卓应用开发中的内存泄漏检测与修复
【9月更文挑战第30天】在安卓应用开发过程中,内存泄漏是一个常见而又棘手的问题。它不仅会导致应用运行缓慢,还可能引发应用崩溃,严重影响用户体验。本文将深入探讨如何检测和修复内存泄漏,以提升应用性能和稳定性。我们将通过一个具体的代码示例,展示如何使用Android Studio的Memory Profiler工具来定位内存泄漏,并介绍几种常见的内存泄漏场景及其解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的技巧和方法,帮助你打造更优质的安卓应用。
|
5月前
|
监控 Java Android开发
探究Android应用开发中的内存泄漏检测与修复
在移动应用的开发过程中,优化用户体验和提升性能是至关重要的。对于Android平台而言,内存泄漏是一个常见且棘手的问题,它可能导致应用运行缓慢甚至崩溃。本文将深入探讨如何有效识别和解决内存泄漏问题,通过具体案例分析,揭示内存泄漏的成因,并提出相应的检测工具和方法。我们还将讨论一些最佳实践,帮助开发者预防内存泄漏,确保应用稳定高效地运行。
|
7月前
|
网络协议 测试技术 网络性能优化
Android系统 以太网吞吐量和丢包测试
Android系统 以太网吞吐量和丢包测试
299 1
|
7月前
|
Android开发
Android热补丁动态修复实践,腾讯&字节&网易&华为Android面试题分享
Android热补丁动态修复实践,腾讯&字节&网易&华为Android面试题分享
|
7月前
|
Java Android开发
Android 9在连接以太网情况下 还能连接WiFi
Android 9在连接以太网情况下 还能连接WiFi
75 0
|
7月前
|
Java Android开发 开发者
rk3399 android以太网和wifi共存
rk3399 android以太网和wifi共存
225 0
|
Android开发
Bug日志(四)——Android 防止多次点击(另解决多个列表子项点击)
在用户使用 应用的时候,经常会出现点击过快且多次点击同一控件的情况, 一方面这是因为应用或手机当前有些卡顿,网络卡啥的 另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮。(比如使用selector再点击后更换背景颜色,图片等等)
|
XML Android开发 数据格式
Bug日志(二)-Android网路请求图片地址图片不显示
Bug日志(二)-Android网路请求图片地址图片不显示