文档章节

busybox在android开发中的应用

二进制的忧伤
 二进制的忧伤
发布于 2014/09/17 14:35
字数 927
阅读 387
收藏 0

最近在一个项目中用到了busybox,开始上网查找相关文档,把自己整理的资料在这里分享下。

    1、busybox是什么?

    Busybox:是一个集成了许多常用linux命令和工具的软件,可以用来做许多事,这里以项目中用例来说明。

    2、安装busybox:

      参考文档:http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html

    3、使用busybox查看网络接口状态:

    

    

    参数详解:

    eth0:表示网卡一;

    HWaddr:表示网卡的物理地址; inet addr:表示网卡的ip地址; Bcast:表示广播地址;Mask:掩码地址;

    eth1:表示网卡二;

    lo:表示localhoat,即127.0.0.1;

    p2p0:表示网络接口,关于p2p0详情见:http://blog.csdn.net/mirkerson/article/details/38276629

    wlan0:表示无线网卡。

    4、busybox在android项目中的使用:

    在android项目中需要进行网口测试,即创建网桥实现局域网内互联,测试网口使用状况,结合实例代码说明如下:

 String[] net_set_cmds = new String[] { "busybox ifconfig", "busybox ifconfig eth0 up",
   "busybox ifconfig eth1 up", "busybox brctl addbr br0", "busybox brctl addif br0 eth0",
   "busybox brctl addif br0 eth1", "busybox ifconfig eth0 0.0.0.0",
   "busybox ifconfig eth1 0.0.0.0",
   "busybox ifconfig br0 192.168.88.2 netmask 255.255.255.0",
   "busybox route add default gw 192.168.88.254", "busybox ifconfig" };
 String[] net_restore_cmds = new String[] { "busybox ifconfig", "busybox brctl delif br0 eth0",
   "busybox brctl delif br0 eth1", "busybox ifconfig br0 down", "busybox brctl delbr br0",
   "busybox ifconfig eth0 up", "busybox ifconfig eth1 up", "busybox ifconfig" };
 private void netSetting(final int step, final String[] cmd) {
  Log.i(TAG, "[netSetting].......................A");
  if (step < cmd.length) {
   handler.post(new MyRunnable(cmd[step], new MyOnCommandResultListener(step, cmd)));
  }
  Log.i(TAG, "[netSetting].......................C");
 }
 class MyOnCommandResultListener implements OnCommandResultListener {
  int step;
  String[] cmd;
  public MyOnCommandResultListener(int step, String[] cmd) {
   this.step = step;
   this.cmd = cmd;
  }
  @Override
  public void onResult(String result) {
   netSetting(++step, cmd);
  }
 }
 
 class MyRunnable implements Runnable {
  String cmd;
  OnCommandResultListener linstener;
  public MyRunnable(String strcmd, OnCommandResultListener onCommandResultListener) {
   cmd = strcmd;
   linstener = onCommandResultListener;
  }
  @Override
  public void run() {
   String result = CommonUtils.getInstance().executeCommand(cmd);
   if (linstener != null) {
    linstener.onResult(result);
   }
  }
 }

    这里使用java代码实现了一个网桥的创建,主要看下其中的命令,net_set_cmds这个字符串数组是创建网桥的命令。

    busybox ifconfig //会输出当前网络接口的情况
    busybox ifconfig eth0 up //启动eth0设备
    busybox ifconfig eth1 up //启动eth1设备
    busybox brctl addbr br0  //建立一个逻辑网段 delbr 删除网段  
    busybox brctl addif br0 eth0 //让eth0成为br0的一个端口
    busybox brctl addif br0 eth1 //让eth1成为br0的一个端口
    busybox ifconfig eth0 0.0.0.0 //网桥的每个物理网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以就不需要IP了。
    busybox ifconfig eth1 0.0.0.0 //
    busybox ifconfig br0 192.168.88.2 netmask 255.255.255.0 //给br0配置ip和子网掩码
    busybox route add default gw 192.168.88.254 //添加默认网关

    调用netSetting(0, net_set_cmds)就可以实现网桥的创建,之后去ping相关ip查看是否ping通,就可检测网口状况。

    当然也可以删除网桥,恢复网络状态,其中net_restore_cmds这个字符串数组就是删除网桥的命令。

    busybox brctl delif br0 eth0 //从br0中删除eth0端口
    busybox brctl delif br0 eth1 //从br0中删除eth1端口
    busybox ifconfig br0 down //关闭逻辑网段br0
    busybox brctl delbr br0 //删除逻辑网段br0
    busybox ifconfig eth0 up //启动eth0设备
    busybox ifconfig eth1 up //启动eth1设备

    值得注意的是:ifconfig 可以用来配置网络接口的IP地址、掩码、网关、物理地址等;用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个 发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,比如在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中;

© 著作权归作者所有

二进制的忧伤
粉丝 9
博文 19
码字总数 16902
作品 0
深圳
程序员
私信 提问
《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第一章 准备工作

首先感谢各位兄弟姐妹们的耐心等待。本书预计在3月中旬上市发售。从今天开始,我将在博客中连载此书的一些内容。注意,此处连载的是未经出版社编辑的原始稿件,所以样子会有些非专业。 [要点...

邓凡平
2014/03/02
1K
1
为Android交叉编译busybox

鉴于android调试模式中提供的命令太少而且功能太弱,给它添加个busybox是必需的,在网上找了几个已经编译好的busybox都挺不错,可是为了折腾,也为了根据自己喜好添加或者删除一些自己不用的...

鉴客
2011/07/28
8.4K
5
为 Android 安装 busybox

转载自:http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html 大 家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见...

无鸯
2011/10/13
3.4K
1
如何在Android模拟器下添加busybox(图文)

1 什么是busybox? BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、fin...

长平狐
2013/03/19
207
0
BusyBox 1.29.1 发布,嵌入式 Linux 的瑞士军刀

BusyBox 1.29.1 已发布,主要修复了 wget(http-> https 重定向)和 sendmail(尖括号解析)的问题。详情 BusyBox 是一个集成了一百多个最常用 linux 命令和工具的软件。BusyBox 包含了一些简...

王练
2018/07/17
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
28分钟前
4
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
31分钟前
4
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
34分钟前
3
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
46分钟前
3
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部