使用Eclipse搭建简易Android服务器

         一直都想做一些自己的app奈何多数功能都需要借助于服务器才能实现,本想用第三方平台,细想之下毕竟不是长久之计。这里自己搭建一个Android简易服务器

         这篇文章只是简单介绍下如何使用Java搭建Android服务器,刚学习不久,有不足之处欢迎指出,共同进步!

        一、环境搭建

                  1、  所需软件列表

                                   a、 Tomcat

                                   b、Eclipse

                                   c、JDK

                  2、环境配置

                             Tomcat配置、JDK安装 参考http://jingyan.baidu.com/article/870c6fc33e62bcb03fe4be90.html,注意如果Eclipse中没有安装Tomcat插件(Windows--
                                                 >Preferences中没有Server、Tomcat这项),可参考 http://www.cnblogs.com/xd502djj/archive/2013/01/17/2864659.html安装 Tomcat插件

      二、项目配置

                 1、服务端

                        1.1     Eclipse中 File-->new--->Dynamic Web Project 新建一个Web Project

                         1.2     在Java Resources 下新建一个包和Main类,写入如下代码: 

package com.chatfree.server;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Main {
    public static final int PORT = 8888;//监听的端口号   

    public static void main(String[] args) {
        System.out.println("服务器启动...\n");
        Main server = new Main();
        server.init();
    }

    public void init() {
        try {
            ServerSocket serverSocket = new ServerSocket(PORT);
            while (true) {
                // 一旦有堵塞, 则表示服务器与客户端获得了连接
                Socket client = serverSocket.accept();
                // 处理这次连接
                new HandlerThread(client);
            }
        } catch (Exception e) {
            System.out.println("服务器异常: " + e.getMessage());
        }
    }

    private class HandlerThread implements Runnable {
        private Socket socket;
        public HandlerThread(Socket client) {
            socket = client;
            new Thread(this).start();
        }

        public void run() {
            try {
                // 读取客户端数据
                DataInputStream input = new DataInputStream(socket.getInputStream());
                String clientInputStr = input.readUTF();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException
                // 处理客户端数据
                System.out.println("客户端发过来的内容:" + clientInputStr);

                // 向客户端回复信息
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                System.out.print("请输入:\t");
                // 发送键盘输入的一行
                String s = new BufferedReader(new InputStreamReader(System.in)).readLine();
                out.writeUTF(s);

                out.close();
                input.close();
            } catch (Exception e) {
                System.out.println("服务器 run 异常: " + e.getMessage());
            } finally {
                if (socket != null) {
                    try {
                        socket.close();
                    } catch (Exception e) {
                        socket = null;
                        System.out.println("服务端 finally 异常:" + e.getMessage());
                    }
                }
            }
        }
    }
}  

1.3 在第一步环境配置中配置好Tomcat后,点击Eclipse中的Tomcat图标,运行Tomcat

                   1.4  在Main类上右键  Run as-->Java Application 服务即可运行

                2、服务端      

                      新建一个Android项目,在MainActivity中写入以下代码,注意修改你的IP的地址:

package com.example.zgp.chatfree;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class MainActivity extends ActionBarActivity {
    private TextView myTextView;
    private Button mBtnConnect;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myTextView = (TextView) findViewById(R.id.tv_info);
        mBtnConnect=(Button)findViewById(R.id.btn_connect);
        mBtnConnect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(new Runnable() {
                    @Override
                    public void run() {

                            Socket socket = null;
                            try {
                                //创建一个流套接字并将其连接到指定主机上的指定端口号
                                socket = new Socket("192.168.1.91", 8888);

                                //读取服务器端数据
                                DataInputStream input = new DataInputStream(socket.getInputStream());
                                //向服务器端发送数据
                                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                                String str = "I am Client";
                                out.writeUTF(str);

                                final String ret = input.readUTF();
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        myTextView.setText(ret);
                                        Toast.makeText(MainActivity.this,ret,Toast.LENGTH_SHORT).show();
                                    }
                                });
                                System.out.println("服务器端返回过来的是: " + ret);

                                out.close();
                                input.close();
                            } catch (Exception e) {
                                System.out.println("客户端异常:" + e.getMessage());
                            } finally {
                                if (socket != null) {
                                    try {
                                        socket.close();
                                    } catch (IOException e) {
                                        socket = null;
                                        System.out.println("客户端 finally 异常:" + e.getMessage());
                                    }
                                }
                            }
                        }

                }).start();

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

    布局文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_info"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
   <Button
       android:layout_below="@+id/tv_info"
       android:text="Connect"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/btn_connect"/>
</RelativeLayout>

运行Android项目,点击上面的Button,Eclipse 服务端控制台即可看到输出,同是在控制台输入字符,即可看到app中文本框中的内容改变。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 22:53:27

使用Eclipse搭建简易Android服务器的相关文章

理解tomcat之搭建简易http服务器

做过java web的同学都对tomcat非常熟悉.我们在使用tomcat带来的便利的同时,是否想过tomcat是如何工作的呢?tomcat本质是一个http服务器,本篇文章将搭建一个简单的http服务器. 1 Catalina模型 首先我们先了解一下tomcat的大致工作原理.tomcat的核心是servlet容器,我们称它为Catalina(为什么叫这个名字?我也不知道 ̄へ ̄).模型图如1.1 图1.1 Connector是用来"连接"容器里边的请求的.它的工作是为接收到每一个 H

Ubuntu 14.10下搭建简易FTP服务器[vsftpd]

Ubuntu下公认最易上手的ftp软件是vsftpd,既然标题都说了是“简易”的,那么必然是用最大众的..下面是正题 目标需求:搭建一个允许匿名/本地登录的FTP,并且支持上传/下载/修改功能,同时FTP的端口可自主决定,FTP的根目录可自主决定. PS:部署过程中遇到任何问题可以先看看本文最下方的Note部分,也许你现在遇到的问题正是我曾经遇到而且解决了的^..^ 步骤一:安装vsftpd sudo apt-get update   # 更新源 sudo apt-get install vsf

mysysgit+gitblit搭建简易高效服务器

1. mysysgit+gitblit安装流程 1.1资源 需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit): jdk1.6 Git-1.8.4-preview20130916.exe gitblit-1.2.1.rar 1.2安装 1.2.1 Git Bash安装 1)双击弹出安装页面 2)点击2次next,进入路径选择,添加自定义的路径即可: 3)点击next,进入 选择组件, 4)点击2次next 进,选择运行环境,选择 "run Git fro

Python中使用Flask、MongoDB搭建简易图片服务器

1.前期准备 通过 pip 或 easy_install 安装了 pymongo 之后, 就能通过 Python 调教 mongodb 了.接着安装个 flask 用来当 web 服务器. 当然 mongo 也是得安装的. 对于 Ubuntu 用户, 特别是使用 Server 12.04 的同学, 安装最新版要略费些周折, 具体说是 ? 1 2 3 4 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB

dnsmasq搭建简易dns服务器

系统:centos6.8_x64 本机IP:172.17.41.243 为了简便直接使用yum安装dnsmasq yum install -y dnsmasq 安装后编辑配置文件/etc/dnsmasql.cof cp /etc/dnsmasq.conf /etc/dnsmasq.conf.ori > /etc/dnsmasq.conf [[email protected] ~]# cat /etc/dnsmasq.conf resolv-file=/etc/resolv.dnsmasq.con

烂泥:dnsmasq搭建简易DNS服务器

今天我们来介绍一个比较简单的DNS服务器dnsmasq.这款软件,已经被我成功使用到公司的所有虚拟机中,目前公司有虚拟机80台左右,而且所在的服务器运行正常.现在看来dnsnasq还是能支持这么多的机器的,服务器的性能还是可以承担的. 一.dnsmasq简介 dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能. dnsmasq可以解决小范围的dns查询问题,如果业务是跨机房.跨地区的话不建议使用dnsmasq做

python3用http.server模块搭建简易版服务器

基本流程: 1.需要的支持 1)python3用http模块下的子模块,即:http.server模块 2)将希望共享的文件放在c盘下,如:C:\游戏行业面试专用 2.打开cmd,cd c:\\python34 3.cd C:\test 4.c:\\python34\python -m http.server 5.在网页中输入http://192.168.1.101:8000/效果图: 6.可成功下载文件等 演示: Microsoft Windows [版本 10.0.10586] (c) 20

eclipse搭建android可能会遇到的问题

1.jdk和eclipse是现有的环境,就基于此搭建android环境,Google服务器在国外,容易被墙,所以推荐自己去找资源 我是在http://www.cnblogs.com/Li-Cheng/p/4335418.html找的资源,下载很快,我的版本是android-sdk_r24.0.2-windows. 2.打开sdk目录,打开SDK Manager.exe,此时,这里是没有东西的 这是因为这个目录下是没有东西的,需要去下载 但是我搞了很久也没下载下来,就是配一个地址让他自己去下载 无

Eclipse下载和Android环境搭建

参考: Eclipse搭建Android环境: https://my.oschina.net/plumsoft/blog/29283?p=4&temp=1491599082792#blog-comments-list Android SDK Manager要下载的东西: https://www.zhihu.com/question/31935836 使用Google镜像的方法:https://zhidao.baidu.com/question/403593663.html?sort=9&r