niusouti.com

● 试题三阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】1.SMTP是发送E-mail的协议,常用以下5条命令发送E-mail:·HELO<SP><domain><CRLF>,与SMTP服务器握手,传送本机域名;·MAIL<SP>FROM:<reverse-path><CRLF>,传送发信者的信箱名称;·RCPT<SP>TO:<forward-path><CRLF>,传送接收者的信箱名称;·DATA<CRLF>,发送邮件数据(包括信头和信体);·QUIT<CRLF>,

题目

● 试题三

阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

1.SMTP是发送E-mail的协议,常用以下5条命令发送E-mail:

·HELO<SP><domain><CRLF>,与SMTP服务器握手,传送本机域名;

·MAIL<SP>FROM:<reverse-path><CRLF>,传送发信者的信箱名称;

·RCPT<SP>TO:<forward-path><CRLF>,传送接收者的信箱名称;

·DATA<CRLF>,发送邮件数据(包括信头和信体);

·QUIT<CRLF>,退出与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。getInputStream( ):用来访问与插口相关的输入流。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.NVTInputStream;//用户自定义类包

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 QUIT=6;

static final int FINISHED=9;

NVTOutputStream out;

NVTInputStream in;

String hostName;

public SMTPServer( )

{

super( );

}

public void run( ){

try {

ServerSocket server= (1) ;//在1145号端口建立TCP服务器插口

int localPort=server.getLocalPort();//监听连接端口

hostNama= (2) ;//获取本地主机域名

System.out.println("listening on port"+localPort+".");

boolean finished=false;

do {

Socket client= (3) ;//监听等待,直到建立连接,返回对象client

String destName= (4) ;//获得所连接的客户主机IP地址的域名

int destPort=client.getPort (); //所连接的客户主机端口号

System.out println("Accepted connection to"+destNama+"on port"+destPort+".");

//控制台显示连接

out=new NVTOutputStream(client.getOutputStream());

in=new NVTInputStream( (5) ); //建立与连接关联的输入流

(6) ;//接收邮件

(7) ;//关闭连接对象

}while(!finished) ;

}catch (UnknownHostException ex) {

System.out.println("UnknownHostException occurred.");//出错处理

}cath(IOException ex) {

System.out.println ("IOException occurred.");

}

}

void 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.println("Server IOException 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://省略代码

case DATA:

if( (10) )//若该行信息为发送邮件数据

{

out.println("354 mail input;end withCRLF.CRLF");

System.out.println(line);

state=END_DATA;

}else{

out.println("500 ERROR");

System.out.println(line);

}

break;

case END_DATA;//代码省略

case QUIT://代码省略

}

}while(state!=FINISHED);

}

//判断客户收到的命令是否与指定的命令字符串相匹配

boolean commandIs(String s,String line){

int n=s.length( );

if(s.equalsIgnoreCase(line.substring(0,n)))return true;

return false;

}

}


相似考题
更多“● 试题三 阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 1.S ”相关问题
  • 第1题:

    图2-1是基于软交换的网络分层模型。请将选项应填入(n)处的字句写在答题纸对应的解答栏内。


    正确答案:
    (1)业务/应用层
    (2)控制层
    (3)接入层
    (4)媒体网关

  • 第2题:

    图6-1是下一代网络的体系结构简图,请根据此简图将应填入(n)处的字句写在答题纸的对应栏内。


    正确答案:
    (1)业务平面
    (2)控制平面
    (3)传输平面
    (4)接入平面
    (5)SIP-TBICC
    (6)SIGTRAN
    (7)MGCP/H.248
    (8)H.323
    (9)SIP

  • 第3题:

    阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer,当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态,现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。



    答案:
    解析:
    1: void update()2: Observer3: obs.update()4: Subject5: Attach(this)

  • 第4题:

    (a)智能网概念模型中分布功能平面模型如下图所示,请根据此图将应填入(n)处的 字句写在答题纸的对应栏内。


    正确答案:
    (1)SMF(或业务管理功能)
    (2)SCEF(或业务生成功能)
    (3)SDF(或业务数据功能)
    (4)SCF(或业务控制功能)
    (5)SSF(或业务交换功能)
    (6)CCF(或呼叫控制功能)

  • 第5题:

    阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。

    【C++代码】 #include using namespace std; class invoice{ public: (1){ cout<<"This is the content of the invoice!"<

    答案:
    解析:
    (1) virtual void printInvoice() (2) ticket->printInvoice() (3) Decorator::printInvoice() (4) Decorator::printInvoice() (5) &a
    【解析】

    试题分析
    1.Invoice类下,义虛函数,按类图,函数名是printInvoice
    2.前面定义对象名是ticket,那么在ticket不为空的时候调用函数printInvoice
    3.这部分填写发票的抬头,看类图应该实现函数printInvoice ,Decorator装饰模式使用该方法
    4.这部分是发票的脚注,看类图应该实现函数printlnvoice,Decorator装饰模式使用该方法
    5.FootDecorator a(NULL) ;脚步的装饰参数是a,调用a参数,

  • 第6题:

    阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。
    【说明】
    某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种
    类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。






    答案:
    解析: