使用Eclipse搭建简易Android服务器
来源:互联网 发布:visual foxpro是编程吗 编辑:程序博客网 时间:2024/05/16 17:04
一直都想做一些自己的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中文本框中的内容改变。
- 使用Eclipse搭建简易Android服务器
- Eclipse开发简易的Android服务器
- 搭建简易Samba服务器
- wap服务器简易搭建
- 简易搭建http服务器
- 简易repo服务器搭建
- 使用Smart HTTP和Gitweb搭建简易个人git服务器
- MongoDB 搭建简易图片服务器
- dnsmasq搭建简易DNS服务器
- 利用树莓派搭建简易服务器
- centos6搭建简易bind服务器
- android学习笔记之使用Eclipse搭建web服务器实现Android客户端登录
- CentOS搭建SVN服务器及使用Eclipse连接SVN服务器
- CentOS搭建SVN服务器及使用Eclipse连接SVN服务器
- eclipse搭建tomcat服务器
- SVN服务器的搭建及简易管理
- Linux搭建apache简易媒体服务器
- rh333 - 利用apache搭建简易https服务器
- 号称最快android虚拟机的genymotion安装出现virtualization engine not found plugin loading aborted另外一个原因
- TestNG中case之间的依赖关系
- OC学习笔记05--分类的使用
- CLRS第二章思考题
- python __file__ 与argv[0]
- 使用Eclipse搭建简易Android服务器
- Concurrency vs Parallelism From Stackoverflow
- android:匿名启动系统Activity方式(系统浏览器、相册、短信、电话)
- 用jdbc连接mysql数据库(c3p0连接池篇)
- zsh – 給你的Mac不同體驗的Terminal!
- 黑马程序员——(面试题)银行业务调度系统
- avi文件格式详解【转】
- 首次登陆mysql,密码修改
- Foundation-NSString类