【Android】 使用AndServer框架在手机上搭建服务器
16lz
2021-01-26
前言
在手机上搭建服务器?没错,我自己都会想哪里有人要在把手机当作服务器,不过,确确实实,由于一个项目,我需要这么干。 最初映入脑海的就是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/
更多相关文章
- tcping测试服务器TCP端口
- Android(安卓)Studio提示端口号5037被占用,无法启动ADB解决办法
- Android开发上传图片到服务器(一.图片选择)
- Android之通过HTTP协议向服务器发送XML数据
- Cordova各个插件使用介绍系列(七)—$cordovaStatusbar手机状态栏显
- Android通过https协议与服务器端进行通信
- Android(安卓)手机拍照
- android JNI 开发技术 (C/C++基础篇)
- Android中Gallery显示手机中的图片