问答题
阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。
【说明】
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 2003)
Host:localhost:8080
Connection:Keep-Alive
◆ HTTP响应消息示例
HTTP/1.1 200
OK
Servert:Microsoft-IIS/6.0
Date:Mon,3 Jan 2008 13:13:33 GMT
Content-Type:text/html
Last-Modified:Mon,11 Jan 2008
13:23:42 GMT
Contelit-Length:112
<html>
...
</html>
2.相关类及主要成员函数
◆ ServerSocket类
服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象,类中的主要成员函数如表6-16所示。
表6-16 ServerSocket类的主要成员函数
函数名 |
功能说明 |
ServerSocket(PORT) |
构造函数 |
Accept() |
返回建立连接的Socket类型的对象 |
Close() |
关闭当前的ServerSocket类型的对象 |
◆Socket类 基于连接的套接字,类中的主要成员函数如表6-17所示。
表6-17
Socket类的主要成员函数
函数名 |
功能说明 |
GetnetAddress() |
返回InetAddress类型的对象,该对象封装了与该套接字所关联的客房机的IP地址 |
GetInputSffeam |
返回当前对象所关联的输入流 |
GetOutputStream |
返回当前对象所关联的输出流 |
Close() |
关闭当前对象 |
【Java源程序:一个简单的Web服务器】
/* WebScrvc.java */
packageobjclass;
import java.net.*;
import java.io.*;
public class WebServer{
public static final
int PORT=8080; //Web服务器侦听的端口号
public static final String WEB_ROOT=
SyStem.getProperty("user.dir")+
File.separator+"webroot";
//WEB_ROOT变量存放Web服务器工作目录,HTML, GIF图片等静态文件资源
private static final String SHUTDOWN_COMMAND="/shutdown";
//SHUTDOWN_COMM_AND变量保存关闭服务器的命令
private Boolean shutdown=false;
//是否收到关闭服务器命令的标志
public static void main(Sting[]
args) {
WebServer server=new
WebServer();
Server.await
()
}
public void
await() {
ServerSocket serverSocket
= null;
try {
serverSocket = new
(1)
;
//创建侦听端口号为PORT的ServerSocket类型的对象
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 = new Request (input);
//创建request对象
Request.
(5) ;
//解析客户端HTTP请求
Response response = new ReSponse(output);
//创建Response对象
response, setRequest (request);
//将request对象传递给response对象
response.
(6) ;
//给客户端发送所请求的静态资源
(7) ;
//关闭连接套接字
shutdown = request.
(8) .equals
(SHUTDOWN_COMMAND);
//凑数当前HTTP请求中的URL是否是关闭服务器命令
}
Catch(Exception e) {
e.printStackTrace ();
continue;
}
}
}
}
/*
Request.java */
package objclass;
import
java.io.InputStream;
import java.iO.IOException;
public Class Request{
private InputStream
input;
private String url;
public Request(InputStream input){this.input = input;}
public void parse() {... parseUrl() ;...}
//解析客户端HTTP请求消息
private
String parseUrl(String requestString){...}
//解析客户端HTTP请求中的URL
public String getUrl(){return
url;}
}
/* Response.java */
package objclass;
import java.io.*;
public
class Response{
private static final int BUFFER_
SIZE=1024;
Request request;
OutputStream output;
public Response(Output Strearm
output) {this.output=output;}
public void
setRequest(Request request){this.request=request;}
public void sendStaticResource()throwsIOmxception{...}
//向客户端发送所请求的静态资源
}
【问题2】
对以上【Java源程序】进行运行测试,请将以下(9)、(10)空缺处的测试命令填写完整。
在本机运行WebServer程序,然后打开IE浏览器。
1)在IE地址栏中,输入请求“/index.html”页面的命令: (9) 。
2)在IE地址栏中,输入关闭Web服务器的命令: (10)
。 |
【参考答案】
(9)http://localhost:8080/index.html或http://127.0.0.1:8080/in......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)