移动端搭建Http Server(二)—— 实现监听并验证

上文移动端搭建Http Server(一)—— 总述中主要对本系列内容作了综述,本文会对Http Server有一个简单的架构,包括:
①设计一个SimpleHttpServer组件
②监听端口并简单向请求者返回信息
③使用telnet来检验结果

1.Android Studio新建一个项目,这里命名为AndroidServer

2.增加SimpleHttpServer,在其中增加启动服务器和停止服务器

在线程中开启ServerSocket

/**
 * 启动Server(异步)
 */
public void startAsync(){
    mIsEnable = true;
    new Thread(new Runnable() {
        @Override
        public void run() {
            doProcessASync();
        }
    }).start();
}

doProcessASync方法具体处理逻辑

private void doProcessASync() {
    try {
        InetSocketAddress socketAddr = new InetSocketAddress(mWebConfig.getPort());
        mSocket = new ServerSocket();
        mSocket.bind(socketAddr);
        while (mIsEnable) {
            // accept是一个阻塞的方法,当有连接时才会返回Socket值
            final Socket remotePeer = mSocket.accept();
            // 每当有一个接入时就放到线程池中处理
            mTreadPool.submit(new Runnable() {
                @Override
                public void run() {
                    Log.d("an-server", "a remote peer accepted" + remotePeer.getRemoteSocketAddress());
                    onAcceptRemotePeer(remotePeer);
                }
            });
        }
    } catch (IOException e) {
        Log.e("an-server", e.toString());
    }
}

上面每接收到一个客户端连接过来就放入线程池中,这样处理多个客户端连接情况。

在onAcceptRemotePeer给客户端一个回执:

/**
 * 处理连接后的操作
 * @param remotePeer
 */
private void onAcceptRemotePeer(Socket remotePeer) {
    try {
        remotePeer.getOutputStream().write("connected success".getBytes());
    } catch (IOException e) {
        Log.e("an-server", e.toString());
    }
}

3.用telnet检验结果

  • 先在模拟器中运行项目
  • 然后打开cmd 输入telnet localhost 5554,出现

这里写图片描述

需要输入一个授权,授权是在

C:\Users\Administrator\.emulator_console_auth_token

用编辑器打开,拷贝其中的值,然后输入auth

这里写图片描述

可以看到授权成功
  • 然后做一个端口映射,把本地的8088端口映射到模拟器的8088端口,这样就可以直接访问本机的8088端口来测试
redir add tcp:8088:8088

这里写图片描述

8088端口映射成功了!

  • 再打开一个cmd窗口,输入telnet localhost 8088,运行成功。

  • 也可以用真机测试,查看手机ip为192.168.1.104,
    运行telnet 192.168.1.104 8088,结果如图

这里写图片描述

这篇就到这里,下篇中在实现功能前我们还需要了解一下HTTP协议的相关知识移动端搭建Http Server(三)—— HTTP协议讲解

github源码地址:https://github.com/jianiuqi/AndroidServer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值