最近在安卓设备上写了一个httpServer,刚开始绑定的端口号是8080,爽歪歪的完成了任务,然后需求改变说把8080改成80的端口。找个挺多方法,也把服务改成了系统的服务。我测试的设备满足以下条件:
1.0设备已root。
2.0已做签名打包。
最后通过命令行实现了iptable,指令如下:
iptables -t nat -A PREROUTING -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
恩,实现步骤是:
1.0)使用超级用户登录
private static Process process;
/** * 初始化进程*/
public static void initProcess(){
if (process ==null){
try {
process = Runtime.getRuntime().exec("su");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.0)发送指令重定向端口号
private static void portreset(){
OutputStream outputStream = process.getOutputStream();
String cmd = "iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 ";
try {
outputStream.write(cmd.getBytes());
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
项目已经打包放在github 连接地址如下:https://github.com/Xtlbb/AndroidDevicesApi
项目中可以修改音量大小,可以系统截图,旋转屏幕等操作。