前言

在手机上搭建服务器?没错,我自己都会想哪里有人要在把手机当作服务器,不过,确确实实,由于一个项目,我需要这么干。 最初映入脑海的就是Socket原生编程了,直到后来发现了封装成http服务器端的AndServer框架!!!

导入依赖

 implementation 'com.yanzhenjie.andserver:api:2.0.5'annotationProcessor 'com.yanzhenjie.andserver:processor:2.0.5'

开启网络权限

<uses-permission android:name="android.permission.INTERNET"/>

服务器管理类

package com.example.andservertest;import android.content.Context;import android.util.Log;import com.yanzhenjie.andserver.AndServer;import com.yanzhenjie.andserver.Server;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.concurrent.TimeUnit;public class ServerManager {    private Server mServer;    private static final String TAG = "ServerManager";    /**     * Create server.     */    public ServerManager(Context context) {        InetAddress inetAddress = null;        try {        //这里的ip地址是手机的ip地址,可通过手机设置>系统->关于手机查看            inetAddress = InetAddress.getByName("192.168.1.11");        } catch (UnknownHostException e) {            e.printStackTrace();        }        mServer = AndServer.serverBuilder(context)            .inetAddress(inetAddress)            .port(8080)            .timeout(10, TimeUnit.SECONDS)            .listener(new Server.ServerListener() {                @Override                public void onStarted() {                    Log.i(TAG, "onStarted: 服务器启动");                                   }                @Override                public void onStopped() {                                       Log.i(TAG, "onStopped: 服务器关闭");                }                @Override                public void onException(Exception e) {                                    Log.i(TAG, "onException: 服务器出现异常"+e.getMessage());                }            })            .build();    }    /**     * Start server.     */    public void startServer() {        if (mServer.isRunning()) {            // TODO The server is already up.        } else {            mServer.startup();        }    }    /**     * Stop server.     */    public void stopServer() {        if (mServer.isRunning()) {            mServer.shutdown();        } else {            Log.w("AndServer", "The server has not started yet.");        }    }}

测试用的Activity

package com.example.andservertest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button button1,button2;    private ServerManager serverManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button1 = findViewById(R.id.button_start);        button2 = findViewById(R.id.button_stop);        serverManager = new ServerManager(this);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                serverManager.startServer();            }        });        button2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                serverManager.stopServer();            }        });    }}

Controller

@RestControllerpublic class UserController {    @GetMapping("/123")    String login() {        Log.i(TAG, "login: 收到消息");        return "你好啊兄弟";    }}

由于电脑和手机使用的是一个宽带,所以自然而然就在一个局域网了
对刚才写的Controller进行测试

关于AndServer

具体使用,可以看作者写的文档,很详细,在这里就不再多说了
https://yanzhenjie.com/AndServer/sample/

更多相关文章

  1. tcping测试服务器TCP端口
  2. Android(安卓)Studio提示端口号5037被占用,无法启动ADB解决办法
  3. Android开发上传图片到服务器(一.图片选择)
  4. Android之通过HTTP协议向服务器发送XML数据
  5. Cordova各个插件使用介绍系列(七)—$cordovaStatusbar手机状态栏显
  6. Android通过https协议与服务器端进行通信
  7. Android(安卓)手机拍照
  8. android JNI 开发技术 (C/C++基础篇)
  9. Android中Gallery显示手机中的图片

随机推荐

  1. Android GPS定位(获取经纬度)
  2. 关于 ExpandableListView 的列子
  3. Android事件拦截处理机制理解:
  4. [置顶] android 手机 华为c8650e 无法在m
  5. 大量Android面试题目来袭
  6. Lync 2010 手机客户端登录体验
  7. Android 嵌入 LuaJIT 的曲折道路
  8. android webView 内核对比
  9. Websense:Android的安全性令人担忧
  10. 开发成本谁更高:Android PK iOS