国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java實(shí)現(xiàn)Http服務(wù)器之二

2019-11-18 14:52:25
字體:
供稿:網(wǎng)友
    在上篇文章中我們介紹了Http協(xié)議的基本知識,以及java中兩個(gè)重要的類Socket和SocketServer類,下面我們將主要介紹如何實(shí)現(xiàn)一個(gè)基于java的Http服務(wù)器。

    Http服務(wù)器主要由三個(gè)類構(gòu)成:HttpServer、Request和Response。其中程序的入口在HttpServer類,它調(diào)用await()方法,使得Server開始等候客戶端的連接。當(dāng)客戶端連接后,它將把靜態(tài)的頁面內(nèi)容發(fā)送給客戶端瀏覽器。下面分別介紹這三個(gè)類:
1:HttpServer類
     HttpServer需要有一個(gè)服務(wù)器的根目錄這在WEB_ROOT變量中定義的:
public static final String WEB_ROOT =System.getpublic 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;
      }
    }
  }
await()方法內(nèi)構(gòu)造一個(gè)ServerSocket的實(shí)例,等客戶端連接進(jìn)來的時(shí)候把socket.getInputStream()傳遞給Request類進(jìn)行解析,把socket.getOutputStream()傳遞給Response類,然后再把request對象傳遞給Response,最后調(diào)用Response.sendStaticResource()方法發(fā)送數(shù)據(jù)給客戶端。socket.close()后監(jiān)測是不是接受到了關(guān)閉Server的命令,假如是的話跳出循環(huán)結(jié)束程序。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兰坪| 白银市| 慈利县| 颍上县| 措勤县| 米易县| 石阡县| 太仆寺旗| 兴义市| 观塘区| 乌拉特后旗| 崇州市| 普格县| 剑川县| 泾川县| 中西区| 绥德县| 湄潭县| 宜川县| 巴彦淖尔市| 崇文区| 资阳市| 东乌珠穆沁旗| 梧州市| 大埔县| 梨树县| 恩平市| 循化| 武城县| 乐清市| 榆社县| 南木林县| 阿合奇县| 当雄县| 二连浩特市| 商水县| 嘉兴市| 江都市| 古蔺县| 耒阳市| 云阳县|