阅读以下说明、Java源程序和运行测试部分 1.HTTP协议。 ●HTTP请求消息示例: GET/index, htmlHTTP/1.1 Accept: image/gif, image/jpeg,* / Acc

admin2009-02-15  27

问题 阅读以下说明、Java源程序和运行测试部分
1.HTTP协议。
   ●HTTP请求消息示例:
      GET/index, htmlHTTP/1.1
      Accept: image/gif, image/jpeg,* /
      Accept-Language: zh-ch
      Accept-encoding: gzip, deflate
      User-Agent: Mozilla/4.0(compatible; MSIE6.0; Windows NT5.1 )
      Host: localhost: 8080
      Connection: Keep-Alive
   ●HTTP响应消息示例:
      HTTP/1.1 200 OK
      Servert: Microsoft-IIS/4.0
      Date:Mon,3 Jan 1998 13:13:33 GMT
      Content-Type: text/html
      Last-Modified:Mon,11 Jan 1998 13:23:42 GMT
      Contelit-Length: 112    
      <html>
       …
      </html>
   2.相关类及主要成员函数。
   SewerSocket类:
   服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象。类中的主要成员函数如表1-4所示。
   
  基于连接的套接字。类中的主要成员函数如表1-5所示。
   
   【Java源程序;一个简单的Web服务器】
       /**********************************************/
      /* WebScrvc.java                              */
      /**********************************************/
      packageobjclass;
      import java.net. *;
      import java.io. *;

      public class WebServer{
    //Web服务器侦听的端口号
   public static final int PORT=8080;
   //WEB—ROOT变量存放Web服务器工作目录,该目录存放HTML、GIF图片等静态文件资源
   public static final String WEB_ROOT=
   System.getProperty("user.dir")+File.separator+"webroot";
   //SHUTDOWN_COMMAND变量保存关闭服务器的命令
   private static final String SHUTDOWN_COMMAND="/shutdown";
   //是否收到关闭服务器命令的标志
      private boolean shutdown=false;
      public static void main(Sting [] args) {
        WebServerserver; newWebServer( );
        Server.await( );
      }
      public void await() {
      ServerSocke serversocke=null;
        try{
            //创建侦听端口号为PORT的ServerSocket类型的对象
           ServerSocket=new  (1)  ;
            System.out.println( "WebServerStarted!");
        }
        catch(IOException e) {
        e.printStackTrace( );
        System.exit(1);
        }
        //循环等待客户端连接
        while(!shutdown) {
        Socket socket=null;
           InputStream input=null;
           OutputStream output=null;
           try{
              //创建来自客户端的连接套接宇
             Socket=  (2)  ;
             //创建输入流
             input=socket.  (3)  ;
             //创建输出流
             Output=socket.  (4)  ;
             //创建request对象
             Request request=new Request(input);
             //解析客户端HTTP请求
             request.  (5)  ;
             //创建Response对象
             Response response=new Response(output);
             //将request对象传递给response对象
             response.setRequest(request);
             //给客户端发送所请求的静态资源
             response.  (6)  ;
             //关闭连接套接字
               (7)  ;
             //判断当前HTTP请求中的URI是否是关闭服务器命令
             shutdown=request.  (8)  .equals(SHUTDOWN_COMMAND);
          }   
          Catch(Exception e){
             e.printStackTrace();
             continue;
          }
        }
      }
   }
   /**********************************************/
       /* Request.java
      /**********************************************/
      package objclass;
      import java.io.InputStream;
      import java.io.IOEexception;
      public ClassRequest{
         private InputStream input;
         private String uri;
         public Request(InputStream input){this.input=input;}
         //解析客户端HTTP请求消息
         public void parse()[…parseUr1();…]
         //解析客户端HTTP请求中的URL
         private String parseUr1(String requestString){……}
      public String getUr1(){return uri;}
      }
      /**********************************************/
      /*Response.java
      /**********************************************/
      package objclass;
      import java.io.*;
      public class Response{
         private static final int BUFFER_SIZE=1024;
         Request request;
         OutputStream output;
         public Response(OutputStrearn output){this.output=output;}
         public void set_Request(Requestrequest){this.request=request;}
         //向客户端发送所请求的静态资源
         public void sendStaticResource() throwsIOException{…}
         }
   【运行测试】
   在本机运行WebServer程序,然后打开IE浏览器。
   1.在IE地址栏中,输入请求“/index.html”页面的命令:  (9)  。
   2.在IE地址栏中,输入关闭Web服务器的命令:  (10)  。

选项

答案(1) ServerSocket(PORT)或ServerSocket(PORT,1, InetAddress.getByName( "127.0.0.1" ) ) (2) serverSocket.accept( ) (3) getlnputStream( ) (4) getOutputStream( ) (5) parse( ) (6) sendStaticResource( ) (7) socket.close( ) (8) getUri( ) (9) http://localhost:8080/i

解析
转载请注明原文地址:https://kaotiyun.com/show/hWPZ777K
0

相关试题推荐
最新回复(0)