HowTomcatWork 笔记 6 服务器端 HttpServer

来源:互联网 发布:专业影像编辑软件 编辑:程序博客网 时间:2024/05/05 09:57

  HttpServer  

监听http请求,产生Socket实例与客户端Socket通信

特别属性:

backlog,在服务器拒绝连接前的最大连续数

System.getProperty("user.dir") --指向当前用户目录,也就是java xxxx ,的时候,所在的目录。


重点:

1.一次只能接收一个Socket接连,因为是单线程


package ex01.pyrmont;import java.net.Socket;import java.net.ServerSocket;import java.net.InetAddress;import java.io.InputStream;import java.io.OutputStream;import java.io.IOException;import java.io.File;public class HttpServer {  /** WEB_ROOT is the directory where our HTML and other files reside.   *  For this package, WEB_ROOT is the "webroot" directory under the working   *  directory.   *  The working directory is the location in the file system   *  from where the java command was invoked.   */  public static final String WEB_ROOT =    System.getProperty("user.dir") + File.separator  + "webroot";  // shutdown command  private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";  // the shutdown command received  private boolean shutdown = false;  public static void main(String[] args) {    HttpServer server = new HttpServer();    server.await();  }  public void await() {    ServerSocket serverSocket = null;    int port = 8080;    try {      serverSocket =  new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));    }    catch (IOException e) {      e.printStackTrace();      System.exit(1);    }    // Loop waiting for a request    while (!shutdown) {      Socket socket = null;      InputStream input = null;      OutputStream output = null;      try {        socket = serverSocket.accept();        input = socket.getInputStream();        output = socket.getOutputStream();        // create Request object and parse        Request request = new Request(input);        request.parse();        // create Response object        Response response = new Response(output);        response.setRequest(request);        response.sendStaticResource();        // Close the socket        socket.close();        //check if the previous URI is a shutdown command        shutdown = request.getUri().equals(SHUTDOWN_COMMAND);      }      catch (Exception e) {        e.printStackTrace();        continue;      }    }  }}


原创粉丝点击