网友您好, 请在下方输入框内输入要搜索的题目:
● 试题四
阅读以下说明、Java源程序和运行测试部分,将应填入(n)处的解答写在答题纸的对应栏中。
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.相关类及主要成员函数
ServerSocket类:
服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象。类中的主要成员函数见表1。
基于连接的套接字。类中的主要成员函数见表2。
【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+"webmot";
//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 utput=null;
try{
//创建来自客户端的连接套接宇
Socket= (2) ;
//创建输入流
input=socket. (3) ;
//创建输出流
Output=socket. (4) ;
//创建request对象
Request request=new Request(input);
//解析客户端HTTP请求
request.parse();
//创建Response对象
Response response=new (5) ;
//将request对象传递给response对象
response.setRequest(request);
//给客户端发送所请求的静态资源
response. (6) ;
//关闭连接套接字
(7) ;
//判断当前HTTP请求中的URI是否是关闭服务器命令
shutdown-request.getUri().equals(SHUTDOWN_COMMAND);
}
Catch(Exception e){
e. (8) ;
continue;
}
}
}
}
/**********************************/
/*Request.java*/
/**********************************/
package objclass;
import javA.io.InputStream;
import javA.io.IOEexception;
public Class Request{
private InputStream input;
private String uri;
public Request(InputStream input){this.input=input;}
//解析客户端HTTP请求消息
public void parse()[…parseUrl();…]
//解析客户端HTTP请求中的URL
private String parseUrl(String requestString){…}
public String getUrl(){return uri;}
}
/***********************************/
/*Response.java*/
/**********************************/
package objclass;
import javA.io.*;
public class Response{
private static final int BUFFER_SIZE=1024;
Request request;
Output Stream output;
public Response(OutputStrearn output){this.output=output;}
public void setRequest(Requestrequest){this.request=request;}
//向客户端发送所请求的静态资源
public void sendStaticResource()throwsIOException}…}
}
【运行测试】
在本机运行WebServer程序,然后打开IE浏览器。
1.在IE地址栏中,输入请求"/index.html"页面的命令: (9) 。
2.在IE地址栏中,输入关闭Web服务器的命令: (10) 。
参考答案