问答题

【说明】
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... //向客户端发送所请求的静态资源

【参考答案】

(A)ServerSocket(PORT)或serverSicket(PORT,A,InetAddress.getByN......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
【说明】 著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。以下C程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。该程序中用1~4分别表示4种颜色。要着色的N个区域用0~-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域了相邻;矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i,所着颜色。 【C程序】 #include <stdio.h> #define N 10 void output(int color[]) *输出一种着色方案* int i ; for ( i = 0 ; i < N ; i++ ) printf( %4d , color[i] ) ; printf ( n ) ; int back(int *ip ,int color[] ) *回溯* intc = 4 ; while ( c == 4 ) if ( *ip <= 0 ) return 0 ; -- (*ip) ; c = (1) ; color[*ip] =-1 ; return c ; *检查区域i,对c种颜色的可用性* int colorOk(int i , intc , int [] [N] ,int color[ ] ) int j ; for (j = 0 ; j < i ; j++ ) if ( (2) ) return 0 ; return 1 ; *为区域i选一种可着色的颜色* int select (int i ,int c ,int adj [] [N] ,int color[ ] ) int k ; for(k = c ; k <= 4 ; k++ ) if( colorOK( (3) )) return k ; return 0 ; int coloring(int adj [] [N]) *寻找各种着色方案* int color[N] , i , c , cnt ; for(i = 0 ; i < N ; i++) color[i] =-1 ; i = c = 0 ; cnt = 0 ; while(1) if((c = (4) ) == 0 c = back( &i , color); if( c == 0 ) return cnt; else (5) ; i++ ; if i == N) output(color); ++cnt ; c = back( &i , color ) ; else c = 0 ; void main()( int adj[N] [N] = 0,1,0,1,1,1,1,1,1,1, 1,0,1,1,0,1,1,1,1,0, 0,1,0,1,0,1,1,0,1,1, 1,1,1,0,1,1,0,0,1,1, 1,0,0,1,0,1,0,0,0,0, 1,1,1,1,1,0,1,0,0,1, 1,1,1,0,0,1,0,0,1,0, 1,1,0,0,0,0,0,0,1,1, 1,1,1,1,0,0,1,1,0,1, 1,0,1,1,0,1,0,1,1,0, ; printf( 共有%d组解. n ,coloring(adj));