Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器

HTTP弱联网java服务器

  • HTTP弱联网java服务器
    • 通过tomcat搭建java服务器linux
      • 1java环境搭建
      • 2tomcat环境搭建
      • 3服务器搭建
    • 下一篇php服务器

通过tomcat搭建java服务器(linux

1、java环境搭建

java环境较容易搭建,在网上很容易找到相关的教程。

2、tomcat环境搭建

参考自百度经验的
http://jingyan.baidu.com/article/e4d08ffdabb0710fd2f60de9.html
下面即是tomcat环境搭建的方法:
官方网站下载最新的tomcat:http://tomcat.apache.org/download-80.cgi 在ubuntu上,我们下载zip和tar.gz。
Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第1张图片
Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第2张图片
解压tomcat 8,用下面的命令(我下载的是tar.gz格式的):
tar -zxvf apache-tomcat-8.0.12.tar.gz
Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第3张图片

开始配置tomcat:
复制解压后的文件到 /opt 目录
sudo cp -r apache-tomcat-8.0.12 /opt
进入 /opt/apache-tomcat-8.0.12 目录
cd /opt/apache-tomcat-8.0.12
打开启动的脚本文件
sudo vi ./bin/startup.sh(不熟悉vi的,可以用gedit打开:sudo gedit./bin/startup.sh)
拓展:vi编辑器在linux的版本中几乎都有,但是gedit不一定有,如果需要,就得自己安装:
sudo apt-get install gedit
打开startup.sh文件后,添加jdk和jre:

JAVA_HOME=/usr/java/jdk1.8.0_20
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME
CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
TOMCAT_HOME=/opt/apache-tomcat-8.0.12

Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第4张图片
JAVA_HOME和JRE_HOME 是已经配置好 JDK和JRE 目录
TOMCAT_HOME 为当前 apache-tomcat-8.0.12 目录
ps:注意,在安装tomcat之前先要安装jdk和jre,我安装的是jdk1.8.0_20的java版本。
这里写图片描述
启动tomcat: sudo ./bin/startup.sh
Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第5张图片
验证tomcat配置和安装是否成功:在浏览器中输入:http://localhost:8080/
关闭tomcat:sudo ./bin/shutdown.sh
Unity3d搭建HTTP弱联网的服务器搭建及客户端编写(一)之java服务器_第6张图片

3、服务器搭建

首先服务器一般有post和get两个方法。分别是服务器处理客户端发来的信息和客户端申请服务器的相关信息。

这里我通过javaWeb的servlet来完成http的服务器

@WebServlet(“/myServlet”)

servlet可以直接通过@WebServlet标签配置URL映射。

doGet方法和doPost方法分别即是服务器的post和get方法

当客户端通过WWW方法传送数据过来后,即调用doPost方法进行处理完成相关服务器的逻辑

request.setCharacterEncoding(“utf-8”)
response.setCharacterEncoding(“utf-8”)

设置request和response的字体格式为utf-8

request.getParameter(“model”)

request.getParameter(“文本”),这里文本即是Unity3d中WWW中getForm.AddField(“文本”, “数据”);的文本,通过该方法即可得到对应文本中的数据信息

PrintWriter out = response.getWriter();
out.print(“文本”);

通过response.getWriter();方法可以得到服务器返回给客户端的输出流,out.print(“文本”);中的文本即是你将会返回给客户端的相关信息,之后你可以在客户端再对得到的信息进行相关的处理。

以下的代码是我这次试验中用到的,主要是返回在该项目中的一个txt文件中的相关信息。XML、json同理。java服务器篇就到此为止了,下一篇会是php的服务器教程。

package com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class myServlet
 */
@WebServlet("/myServlet")
public class myServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */

    public myServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        super.init(config);
    }

    /**
     * @see Servlet#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("doget");
        getInfo(request.getRealPath("/"), response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

        System.out.println(request.getParameter("model"));
        if (request.getParameter("model").equals("Get")) {
            doGet(request, response);
        } else {
            System.out.println("dopost");
            PrintWriter out = response.getWriter();
            saveInfo(request.getRealPath("/"), request);
            if (myBean.isAchievement()) {
                out.print("true");
            } else {
                out.print("false");
            }
        }
    }

    private void getInfo(String filePath, HttpServletResponse response) {
        filePath += "haha.txt";
        System.out.println(filePath);
        try {
            String encoding = "utf-8";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) { // 判断文件是否存在
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                PrintWriter out = response.getWriter();
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    out.println(lineTxt);
                }
                bufferedReader.close();
                read.close();
            } else {
                System.out.println(filePath);
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
    }

    private void saveInfo(String filePath, HttpServletRequest request) {
        filePath += "haha.txt";
        try {
            String encoding = "utf-8";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) { // 判断文件是否存在
                OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true), encoding);
                BufferedWriter bufferedWriter = new BufferedWriter(writer);
                System.out.println("append");
                bufferedWriter.append(request.getParameter("text"));
                bufferedWriter.close();
                writer.close();
                myBean.setAchievement(true);
            } else {
                System.out.println(filePath);
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
    }

}

下一篇php服务器


你可能感兴趣的:(Unity3d,游戏服务器,http弱联网游戏)