iperf是什么就不介绍了,其实下面的方法也是在网上抄过来的,主要参考的网址如下:
iperf的使用
iperf的源码可以在下面下载
1,下载源码解压缩到,android_root/external下
2,生成一些头文件,在android_root/external/iperf-2.0.4下运行 ./configure -host=arm ,如果你的虚拟机是x86的那就 -host=x86
3, 在android_root/external/iperf-2.0.4下生成如下的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
LOCAL_SRC_FILES += \
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.c
LOCAL_C_INCLUDES += \
$(LOCAL_PATH) \
$(LOCAL_PATH)/include
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_LDLIBS += -lpthread
LOCAL_SHARED_LIBRARIES := libc libm libcutils libnetutils
LOCAL_MODULE := iperf
#LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
#LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
LOCAL_MODULE_TAGS := eng
include $(BUILD_EXECUTABLE)
4,编译
$cd android_root
$. build/envsetup.sh
$mmm external/iperf-2.0.4
我没按照其他文档中的提示进行代码的修改,也可以编译,但是会遇到如下错误
error: format not a string literal and no format arguments
这个是由于printf或者fprintf造成的,需要加入一个format string就可以了,例如
fprintf(stderr, usage_long1); -> fprintf(stderr,"%s", usage_long1);
printf(xxxx); -> printf("%s",xxxx);
5, 生成的iperf会加入到xbin目录下
6, 我是如下使用iperf的
TCP
server: iperf -s
client: iperf -c serverip
UDP
server: iperf -u -s
client: iperf -u -c serverip -b 100M -i 1 -w 1M -t 20