JAVA编写的一个简单的Socket实现的HTTP响应服务器

来源:互联网 发布:java中ioc是什么 编辑:程序博客网 时间:2024/05/16 17:23
JAVA编写的一个简单的Socket实现的HTTP响应服务器,看后就很容易理解Web服务器的原理了。
package test.io;    import java.net.*;  import java.io.*;    /**  * 一个简单的Socket实现的HTTP响应服务器。<br>  * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。  *   * @author  */  public class MyWebServer {    public static void main(String[] args) {      Socket socket = null;      try {        // 创建一个监听8000端口的服务器Socket        ServerSocket s = new ServerSocket(8000, 3);        System.out.println("MyWebServer等待来自浏览器的连接\n");        while (true) {          socket = s.accept();          System.out.println("连接已建立。端口号:" + socket.getPort());          new MyWebServerThread(socket).start();        }      } catch (IOException e) {        e.printStackTrace();      }    }  }    class MyWebServerThread extends Thread {    private Socket socket;      MyWebServerThread(Socket socket) {      this.socket = socket;    }      @Override    public void run() {      try {        InputStreamReader is = new InputStreamReader(socket.getInputStream());        char[] bs = new char[2048];        PrintStream out;        out = new PrintStream(socket.getOutputStream());        StringBuilder msg = new StringBuilder();        // 如果10毫秒还没有数据,则视同没有新的数据了。        // 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。        // 实际应用,会根据协议第一行是GET还是 POST确定。        socket.setSoTimeout(10);        //        // 此处读入请求数据并做相应的处理        //        int len = -1;        try {          while ((len = is.read(bs)) != -1) {            msg.append(bs, 0, len);            msg.append("\n");          }        } catch (Exception ex) {          // ex.printStackTrace();        }        // 下面是由服务器直接生成的主页内容        // 1、首先向浏览器输出响应头信息        out.println("HTTP/1.1 200 OK");        out.println("Content-Type:text/html;charset:GBK");        out.println();        // 2、输出主页信息        out            .println("<HTML><BODY>"                + "<center>"                + "<H1>HTTP协议测试服务器,当前时间:"                + new java.util.Date()                + "</h1>"                + "<form method='get'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='GET测试'/></form><br/>"                + "<form method='post'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='POST测试'/></form><br/>"                + "<form method='post'  enctype='multipart/form-data'>phototitle:<input type='text' name='phototitle'/>photo:<input type='file' name='photo'/><input type='submit' value='Upload测试'/></form>"                + "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>");        out.flush();        out.close();        is.close();        System.out.println("close");        // 关闭连接        socket.close();      } catch (IOException e) {        e.printStackTrace();      }    }  }  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大便时拉出血怎么办啊 2岁宝宝大便干燥怎么办 5岁儿童大便干燥怎么办 九个月宝宝平血怎么办 6个月宝宝肛裂怎么办 3岁儿童大便干燥怎么办 外痔疮出血了该怎么办 外痔疮流血了怎么办呢 外痔疮破了出血怎么办 拉稀拉的肛门疼怎么办 大人屁股沟裂了怎么办 肛门痛大便有血怎么办 肛裂出血几天了怎么办 肛裂拉屎出血该怎么办 孕期肛裂出血该怎么办 老人大便拉不出来怎么办 拉屎拉的屁眼疼怎么办 拉屎堵在肛门口怎么办 上火拉大便有血怎么办 7岁儿童大便带血怎么办 阴炎用药后出血怎么办 孕晚期大便拉不出来怎么办 想拉屎拉不出来怎么办 4岁幼儿大便干燥怎么办 2岁幼儿大便干燥怎么办 1岁幼儿大便干燥怎么办 5岁幼儿大便干燥怎么办 4岁儿童大便干燥怎么办 狗吃别的狗的屎怎么办 狗狗黄疸怎么办最有效 拉屎出血但不疼怎么办 没拉出时就出血怎么办 拉不出大便怎么办肛门像被堵住 尿里粘液丝高怎么办 右肋骨里面疼是怎么办 腰受凉直不起来怎么办 干活累了腰疼怎么办 打球腰打球腰疼怎么办 生完孩子腰酸痛怎么办 腰窝哪里痛是怎么办 尿结石疼的时候怎么办