Android 使用iperf测试wifi吞吐量
来源:互联网 发布:开淘宝店怎么找厂家 编辑:程序博客网 时间:2024/05/21 06:49
Android使用iperf测试wifi吞吐量
大体上分为三个步骤
- 编译生成android端的可执行文件iperf
- 把该文件拷贝到/data/data/包名/iperf目录下
- 根据iperf命令执行该文件
第一部分,在android下编译生成iperf文件
1.获取需要编译的源代码:https://osdn.net/projects/sfnet_iperf/downloads/iperf-2.0.5.tar.gz/
2.将下载来的文件解压后放置到android/external目录下
3.在该android/external/iperf-2.0.5目录下创建Android.mk文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS) LOCAL_SRC_FILES := compat/Thread.c \ compat/error.c \ compat/delay.cpp \ compat/gettimeofday.c \ compat/inet_ntop.c \ compat/inet_pton.c \ compat/signal.c \ compat/snprintf.c \ compat/string.c \ src/Client.cpp \ src/Extractor.c \ src/Launch.cpp \ src/List.cpp \ src/Listener.cpp \ src/Locale.c \ src/PerfSocket.cpp \ src/ReportCSV.c \ src/ReportDefault.c \ src/Reporter.c \ src/Server.cpp \ src/Settings.cpp \ src/SocketAddr.c \ src/main.cpp \ src/sockets.c \ src/stdio.c \ src/tcp_window_size.c \ src/gnu_getopt.c \ src/gnu_getopt_long.c \ src/service.cLOCAL_C_INCLUDES += \ $(LOCAL_PATH) \ $(LOCAL_PATH)/includeLOCAL_CFLAGS += -O2 LOCAL_CFLAGS += -DHAVE_CONFIG_HLOCAL_SHARED_LIBRARIES := libc libm libcutils libnetutils LOCAL_MODULE := iperfLOCAL_MODULE_TAGS := debuginclude $(BUILD_EXECUTABLE)
4.4.生成需要的头文件
./configure --host=arm
5.修改源码的头文件:
1. 把 compact/signal.c 里面的 #include "util.h"改成 #include "../include/util.h"2. 把 src/sockets.c 里面的 #include "util.h"改成 #include "../include/util.h"
6.在android目录下编译生成iperf
$source build/envsetup.sh$mmm external/iperf-2.0.5
7.会在out里面目录下生成一个iperf文件,这个文件就是要拷贝到/data/data…目录的文件
第二部分,copy iperf
/*** 1. 拷贝iperf到该目录下*/private static final String IPERF_PATH = "/data/data/com.android.wifiiperf/iperf";public void copyiperf() { File localfile; Process p; try { localfile = new File(IPERF_PATH); p = Runtime.getRuntime().exec("chmod 777 " + localfile.getAbsolutePath()); InputStream localInputStream = getAssets().open("iperf"); Log.i(TAG,"chmod 777 " + localfile.getAbsolutePath()); FileOutputStream localFileOutputStream = new FileOutputStream(localfile.getAbsolutePath()); FileChannel fc = localFileOutputStream.getChannel(); FileLock lock = fc.tryLock(); //给文件设置独占锁定 if (lock == null) { Toast.makeText(this,"has been locked !",Toast.LENGTH_SHORT).show(); return; } else { FileOutputStream fos = new FileOutputStream(new File(IPERF_PATH)); byte[] buffer = new byte[1024]; int byteCount = 0; while ((byteCount = localInputStream.read(buffer)) != -1) {// 循环从输入流读取 // buffer字节 fos.write(buffer, 0, byteCount);// 将读取的输入流写入到输出流 Log.i(TAG, "byteCount: "+byteCount); } fos.flush();// 刷新缓冲区 localInputStream.close(); fos.close(); } //两次才能确保开启权限成功 p = Runtime.getRuntime().exec("chmod 777 " + localfile.getAbsolutePath()); lock.release(); p.destroy(); Log.i(TAG, "the iperf file is ready"); } catch (Exception e) { e.printStackTrace(); }}
第三部分,执行iperf文件,其中CommandResult、CommandHelper和iperf文件在GitHub里面了。
/** * 2. 在Android应用中执行iperf命令 */private void sercomfun(final String cmd) { Log.i(TAG, "sercomfun = " + cmd); Thread lthread = new Thread(new Runnable() { @Override public void run() { try { String errorreply = ""; CommandHelper.DEFAULT_TIMEOUT = 150000; CommandResult result = CommandHelper.exec(cmd); if (result != null) { //start to connect the service if (result.getError() != null) { errorreply = result.getError(); Message m = new Message(); m.obj = errorreply; m.what = IPERF_ERROR; handler.sendMessage(m); Log.i(TAG,"Error:" + errorreply); } if (result.getOutput() != null) { iperfreply = getThroughput(result.getOutput()); IPERF_OK = true; Message m = new Message(); m.obj = iperfreply; m.what = IPERF_SCCESS; handler.sendMessage(m); Log.i(TAG,"Output:" + iperfreply); } Log.i(TAG,"result.getExitValue(): "+result.getExitValue()); } } catch (Exception e) { e.printStackTrace(); } } }); lthread.start();}
GitHub项目地址(包括wifi地址,信号),https://github.com/xhunmon/wifiIperf
阅读全文
0 0
- Android 使用iperf测试wifi吞吐量
- 使用iperf测试终端WiFi模块吞吐量
- 使用Iperf工具测试android系统网络wifi的吞吐量wifithrougput
- 使用Iperf工具测试android系统网络wifi的吞吐量wifithrougput
- 怎么使用iperf来测量wifi吞吐量
- iperf测试吞吐量
- Wifi throughput(吞吐量) test throuth iperf
- WiFi吞吐量测试
- 使用Iperf测试带宽
- 使用iperf测试网络
- iperf 测试wifi速率rx偏低解决方案.
- 使用iperf测试网络性能
- 使用iperf测试网络性能
- 使用iperf进行网络测试
- 使用iperf测试网络性能
- 使用iperf测试网络性能
- 使用iperf测试网络性能
- wifi吞吐量测试环境搭建和mifi的wifi吞吐量测试
- 重构树 Fiolki
- 错排两大公式
- spring boot事物
- hdu 5442 Favorite Donut(最大表示法+kmp)
- 矩阵中的路径
- Android 使用iperf测试wifi吞吐量
- List的clone方法的应用
- Qt无边框窗口简单示例
- c语言操作mysql和数据库基本操作
- 推荐3个微信小程序地图接口Api
- 暑期集训总结
- 【Redis】windows环境下redis的安装与python的简单调用
- oracle分区表详解
- 计算机书籍推荐