此题为判断题(对,错)。
第1题:
阅读以下说明和Java程序代码,将应填入(n)处的字句写在对应栏内。
SMTP是发送E-mail的协议,常用以下5条命令发送E-mail:
HELO,与SMTP服务器握手,传送本机域名;
MAILFROM:,传送发信者的信箱名称;
RCPTTO:,传送接收者的信箱名称;
DATA,发送邮件数据(包括信头和信体);
QUIT,退出与SMTP服务器的连接。
2.试题中直接利用的类及方法如下:
(1)类ServerSocket(int port)实现TCP服务器接口(socket),它提供两种构造函数,用它们来指定服务器插口所用的端口,并监听到达的连接请求。类中的主要方法有:
accept( ):启动服务器插口监听并等待,直到建立连接为止,一旦建立连接就返回Socket类的一个对象。
getInetAddress( ):返回插口所连接的主机地址。
getLocaIPort( ):返回在服务器插口上建立了连接的端口。
close( ):关闭服务器插口。
(2)类InetAddress包装了Internet地址。类中的主要方法有:
getLocaIHost( ):返回一个代表本机Internet地址的InetAddress对象。
getaddress( ):获得数字表示的IP地址。
getHostName( ):获得域名。
(3)类Socket实现基于连接的客户插口。类中的主要方法有getInetAddress( ):返回一个与插口连接的客户机的Internet地址,其类型为InetAd-dress。getlnputStream( ):用来访问与插口相关的输入流。getOutputStream( ):用来访问与插口机关的输出琉。close( ):关闭插口。
(4)readLine( )是输入流类的一个方法,用于服务器或客户从对方读入一行输入流信息。
(5)用户白定义类NVTInputStream(InputStream inStream, OutputStream outStream)实现了网络虚拟终端输入接口。
(6)用户自定义类NVTOutputStream(OutputStream outStream)实现了网络虚拟终端输接口。
3.下面是用Java语言实现的一个简单SMTP服务器程序的部分代码。
[程序代码]
import java.net. *:
import java.io. *;
import jdg. yan. NVTlnputStream; //用户自定义类包
import jdg. yan. NVTOutputStream; //用户自定义类包
public class SMTPServer App
{
public static void main(String args[])
{
SMTPServer server=new SMTPServer( );
server. run( );
}
}
class SMTPServer
{
static final int HELO=1;
static final int MAIL=2;
static final int RCPT=3;
static final int DATA=4;
static final int END_DATA=5;
static final int OUIT=6;
static final int FINISHED=9;
NVTOutputStream out;
NVTInputStream in;
String hostName;
public SMTPServer( )
{
super( );
}
public void run( ){
try{
ServerSOcket server=(1);//在1145号端口建立下CP服务器插口
int localPort=server. getLocalPort( );//监听连接端口
hostNama=(2);//获取本地主机域名
SVstem. out. prfntln("listening on port"+locaIPort+".");
boolean finished=false;
do {
Socket client=(3);//监听等待,直到建立连接,返回对象client
Stnng destName=(4);//获得所连接的客户主机IP地址的域名
int destPort=client. getPort( );//所连接的客户主机端口号
System. out pnntln("Accepted connection to"+destNama+"on port"+destPort+"."
//控制台显示连接
out=new NVT0utputStream(client. get OutputStream( ));
In=new NVTInputStream((5));//建立与连接关联的输入流
(6);//接收邮件
(7);//关闭连接对象
}while(! finished);
}catch(UnknownHostException ex){
SVstem.out.printtn("UnknownHostException occurred.");//出错处理
}cath(lOException ex){
System. out. println("lOException occurred.");
}
}
vold getMail( ){ //实现SMTP的子集,从客户接收邮件
out. println("Server220"+hostName+"Ready!");
int state=HELO; //设置状态为HELO,state保存与客户通信的状态
do{ //接收并处理从邮件客户接收到的命令
String line="";
out. println("Server 250 HELO, OK!");
try{
line=(8);//从虚拟终端读取一行
if(line==null)state=FINISHED;
}catch(IOException ex){
System. out. prmntln("Server IOExceptlon occurred.");
System.exit(1);
}
switch(state){
case HELO:
if((9))//若该行信息为传送本机域名
{
out. println("Server 250 Hello");
System. out. println(line);
state=MAIL;
}else{
out. println("Server 500 ERROR");
System. out. println("Server"+line);
}
state=FINISHED;
break'
case MAIL: //省略代码
case RCPT:
第2题:
A、InetAddress
B、DatagramSocket
C、Socket
D、ServerSocket
第3题:
[Java 源程序:一个简单的Web服务器]
/************************************************************/
/* WebServer.java* /
/************************************************************/
package objclass;
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_COMMAND变量保存关闭服务器的命令
private boolean shutdown=falset //是否收到关闭服务器命令的标志
public static void main(String[] args) {
WebServer server=new WebServer();
server.await();
}
public void await(){
Serversocbet serverSocket=null
try{
serversocket=new (1) ; //创建侦听端口号为PORT的Serversocket类型的对象
System.out.println(“WebServer Started!”);
}cateh(10Exceptione){
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=new Request(input); //创建Request对象
request. (5) ; //解析客户端HTTP请求
Responseresponse=new Response(output); //创建Response对象
response.setRequest(request); //将Request对象传递给Response对象
response (6) ; //给客户端发送所请求的静态资源
(7) , //关闭连接套接字
shutdown=request. (8) .equals(SHUTDOWN_COMMAND);
//判断当前HTTP请求中的URI是否是关闭服务器命令
}
}
}
}
/************************************************************/
/ * Request.java */
/************************************************************/
package objclass;
import java.io.InputStream;
import java.io.IOException;
public class Request {
private InputStream input;
private String uri;
public Request(InputStream input) { this.input=input;}
public void parse() {... parseUri();...} //解析客户端HTTP请求消息
private String parseUri(String requestString) {... } //解析客户端HTTP请求中的URI
public String getUri() {return uri;}
}
/************************************************************/
第4题:
阅读以下技术说明、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所示。
◆Socket类 基于连接的套接字,类中的主要成员函数如表6-17所示。
【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 utput = null;
try{
Socket =(2); //创建来自客房端的连接套接字
Input = socket.(3); //创建输入流
utput = socket.(4); //创建输出流
Request reque
第5题:
● 试题四
阅读以下说明、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) 。
第6题:
ServerSocket类和Socket类主要完成TCP程序设计。
第7题:
用Java程序实现流式socket通信,需要使用哪两个类?它们是如何定义的?怎样使用?
第8题:
查看bep1主机与前台n7server的连接情况,需要inaccess接入到manager当中,执行命令()
第9题:
下面正确的创建 Socket 的语句是()
第10题:
服务器端需要ServerSocket需要绑定端口号
服务器端需要ServerSocket需要绑定端口号和IP地址
客户端需要Socket,需要绑定端口号
客户端需要ServerSocket,需要绑定端口号
第11题:
如果连接成功,则可以通过此Socket对象进行通讯;
如果连接成功,则重新创建一个Socket对象用于通讯;
向指定的IP地址和端口号进行连接尝试;
创建一个Socket对象;
首先通过网络扫描工具扫描服务器端是否已经开通;
第12题:
对
错
第13题:
阅读以下说明、Java源程序和运行测试部分,将应填入(n)处的解答写在对应栏中。
1. HTTP 协议
HTTP请 求消息示例
GET/index, htmIHTTP/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: IocaIhost: 8080
Connection: Keep-Alive
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 >
…
2.相关类及主要成员函数
ServerSocket类:
服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象。类中的主要成员函数见表1。
基于连接的套接字。类中的主要成员函数见表2。
[Java源程序;一个简单的web服务器]
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*WebScrvc. java */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
packageobjclass;
importjaVa. net. *;
importjaVa. io. *;
public class WebServer{
//web服务器侦听的端口号
public static final int PORT=8080;
//WEB-ROOT变量存放web服务器工作目录,该目录存放HTML、GIF图片等静态文件资源
public static final String WEB-ROOT=
Systern. 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 output=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;
第14题:
在java.net包中提供了两个类______和ServerSocket,这两个类分别用来表示双向连接的客户端和服务端。
A.ClientSocket
B.Socket
C.clientsocket
D.socket
第15题:
阅读以下说明、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 utput=null;
try{
//创建来自客户端的连接套接宇
Socket= (2) ;
//创建输入流
input=socket. (3) ;
//创建输出流
utput=socket. (4) ;
//创建request对象
Request request=new Request(input);
//解析客户端HTTP请求
request. (5) ;
//创建Response对象
Response response=new Response(output);
第16题:
A.ServerSocket类是被final关键字修饰的类,因此没有子类
B.ServerSocket类用于表示服务器端
C.ServerSocket类中的accept()方法会阻塞
D.创建ServerSocket对象时可以指定需绑定到的端口
第17题:
建立Socket类的客户端需要哪些步骤?()
第18题:
Socket的工作步骤分为:创建Socket、打开连接到Socket的输入/输出流、按某个协议对Socket进行读/写操作、()
第19题:
与流式socket相比,数据报通信有何特点?
第20题:
使用UDP协议通信时,需要使用哪个类把要发送的数据打包()
第21题:
第22题:
Socket a = new Soeket(80):
Socket b = new Socket(130. 3. 4. 5, 80):
ServerSocket c = new Socket(80)
ServerSocket d = new Socket (130. 3. 4, 5, 80)
第23题: