• 在安卓手机上搭建一台微型服务器


    相信很多人手上都有一些闲置的手机,那可不可以在这些手机上搭建一个服务器呢?下面我们分享一种搭建简易服务器的思路。

    1、ROOT手机

    ROOT并非必须,但是ROOT后我们可以更方面的进行保活等操作,各个品牌的手机root方法不尽相同,下面简单介绍下小米手机的一种ROOT办法。(注意,手机Root后会变的不再安全,非专业人士不要操作)

    1.1、解锁bootloader

    因为后续需要输入recovery镜像,所以我们需要首先解锁bootloader锁。
    直接在小米的官网上申请就行,按照操作提示一步一步操作就好

    http://www.miui.com/unlock/index.html

    1.2、刷入img文件

    这里我们选择刷入第三方的recovery工具,可以在下方找到各个手机型号的第三方recovery文件

    https://twrp.me/Devices/

    当下载完成后,按照以下的操作步骤刷入recovery镜像。

    进入bootloader模式
    adb reboot bootloader
    刷入recovery镜像
    fastboot flash recovery recovery.img
    重启进入recovery模式
    fastboot boot recovery.img

    等待进入recovey模式。 选择高级-> ROOT系统就好
    在这里插入图片描述
    至此,我们ROOT手机的动作已经完成。

    2、利用NanoHTTPD搭建微型服务器

    NanoHTTPD是一个Java的微型HTTP服务器库,利用它可以很方便的在Android中启动一个本地服务器。
    github地址如下

    https://github.com/NanoHttpd/nanohttpd

    module的build.gradle增加如下修改

    dependencies {
        implementation 'org.nanohttpd:nanohttpd:2.3.1'
    }
    
    • 1
    • 2
    • 3

    然后继承NanoHTTPD类实现服务端

    public class TmpWebServer extends NanoHTTPD {
    
        public TmpWebServer(int port) {
        	//本地服务器的端口
            super(port);
        }
        @Override
        public Response serve(IHTTPSession session) {
        	//获取请求的URL
            Uri uri = Uri.parse(session.getUri());
            //获取请求的method
            Method method = session.getMethod();
            if (Method.PUT.equals(method) || Method.POST.equals(method)) {
                    Map<String, String> postData = new HashMap<>();
                    //获取POST请求的body
                    session.parseBody(postData);
                  	//这里可以做逻辑处理
                  	//返回Response
                    return newFixedLengthResponse(Response.Status.OK, NanoHTTPD.MIME_PLAINTEXT, GsonManager.instance().toJson(apiHandler.response(classLoader, parms)));
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、利用frp实现端口映射

    上面我们通过NanoHTTPD搭建了一个微型服务器,但是我们如何在公网上访问这个微型服务器呢?这里我们利frp实现内网和公网的端口映射。

    frp是一个可用于内网穿透的高性能反向代理工具,支持TCP、UDP协议,为HTTP和HTTPS应用协议提供了额外的支持能力,并支持点对点穿透,github地址如下:

    https://www.jianshu.com/p/e0581ee84323

    我们在GitHub的release页面可以找最新的版本下载。下载解压后会发现有以下文件
    在这里插入图片描述
    这几个文件的作用如下

    • frpc 客户端的执行文件
    • frpc.ini 客户端的配置文件
    • frps 服务端的执行文件
    • frps.ini 服务端的配置文件

    我们首先打开frps.ini配置服务端

    [common]
    bind_port = 9780 //用来与客户端建立透传连接的端口
    vhost_http_port = 9781 //公网HTTP请求的端口

    然后配置客户端

    [common]
    server_addr = 47.111.173.166 //服务端的ip地址
    server_port = 9780 //服务端映射的端口号
    [web]
    type = http
    local_ip = 127.0.0.1
    local_port = 8083 //客户端的端口号,即步骤2中TmpWebServer设置的端口号
    custom_domains = 47.111.173.166

    完成配置之后,我们在服务端执行下面命令开启透传

    nohup ./frps -c frps.ini >/dev/null 2>log &

    在客户端执行下面命令开启透传

    nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

    至此,我们一台运行在Android手机上的微型服务器就搭建完成了!

  • 相关阅读:
    [附源码]SSM计算机毕业设计医院挂号系统JAVA
    Mac终端出现 brew command not found 解决
    《分治中的典型题型-求字符串的最大子段和》
    开源工业软件:SCADA系统开源
    内核学习——1、list_head
    一种接口依赖关系分层方案
    springboot+教学工作量管理系统 毕业设计-附源码221541
    记录开发过程中遇到的oracle 分页问题
    奥特曼autMan机器人安装,开启插件市场+对接QQ、微信、公众号教程
    Linux-----网络套接字编程
  • 原文地址:https://blog.csdn.net/weixin_43662090/article/details/125526929