niusouti.com

Socket 类与 ServerSocket类是用Java实现流式Socket通信的主要工具,创建一个ServerSocket对象就建立了一个Client与Server间的连接。()此题为判断题(对,错)。

题目
Socket 类与 ServerSocket类是用Java实现流式Socket通信的主要工具,创建一个ServerSocket对象就建立了一个Client与Server间的连接。()

此题为判断题(对,错)。


相似考题

1.● 试题三阅读以下说明和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) ;//监听等待,直到建立连接,返回对象clientString 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;}}

更多“Socket 类与 ServerSocket类是用Java实现流式Socket通信的主要工具,创建一个ServerSocket对象就建立了一个Client与Server间的连接。() ”相关问题
  • 第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:


    正确答案:(1)new ServerSocket(1145) (2)InetAddress. getLocalHost( ).getHostName( ) (3)server. accept( ) (4)client. getlnetAddress( ).getHostName( ) (5)client. getlnputStream( )out (6)SetMail( ) (7)client. close( ) (8)in. readLine( ) (9)commandIs("HELO" line) (10)commandIs(”DATA”line)
    (1)new ServerSocket(1145) (2)InetAddress. getLocalHost( ).getHostName( ) (3)server. accept( ) (4)client. getlnetAddress( ).getHostName( ) (5)client. getlnputStream( ),out (6)SetMail( ) (7)client. close( ) (8)in. readLine( ) (9)commandIs("HELO", line) (10)commandIs(”DATA”,line)

  • 第2题:

    Java提供的类进行有关Internet地址的操作类型是( )。

    A、InetAddress

    B、DatagramSocket

    C、Socket

    D、ServerSocket


    参考答案:A

  • 第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;}

    }

    /************************************************************/


    正确答案:(1)ServerSocket(PORT) 或 ServerSocket(PORT 1 InetAddress. getByName("127. 0.0.1")) (2) serverSocket. accept() (3) getlnputStream() (4) getOutputStream() (5) parse() (6) sendStaticResource() (7) socket. close() (8) getUri() (9) http://localhost:8080/index. html 或 http.//127.0.0.1:8080/index.html (10) http://localhost:8080/shutdown 或 http://127.0.0.1: 8080/shutdown
    (1)ServerSocket(PORT) 或 ServerSocket(PORT, 1, InetAddress. getByName("127. 0.0.1")) (2) serverSocket. accept() (3) getlnputStream() (4) getOutputStream() (5) parse() (6) sendStaticResource() (7) socket. close() (8) getUri() (9) http://localhost:8080/index. html 或 http.//127.0.0.1:8080/index.html (10) http://localhost:8080/shutdown 或 http://127.0.0.1: 8080/shutdown 解析:本题考查考生对Socket通信的基本模型和Java的基本调用方法的了解。下面介绍基于Socket的客户/服务器通信模式的基本模型。
    在TCP/IP网络应用中,通信的2个进程间相互作用的主要模式是客户/服务器模式 (Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于2点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户/服务器模式的TCP/IP。
    客户/服务器模式在操作过程中采取的是主动请求方式。首先服务器方启动,并根据请求提供相应服务;
    (1)打开一通信通道并告知本地主机,它愿意在某一公认地址上(端口,如FTP为 21)接收客户请求;
    (2)等待客户请求到达该端口;
    (3)接收到重复服务请求,处理该请求并发送应答信号,接收到并发服务请求,要激活一新进程来处理这个客户请求(如UNIX系统中用fork和exec)。新进程处理此客户请求,并不需要对其他请求作出应答。服务完成后,关闭此新进程与客户的通信链路并终止;
    (4)返回第2步,等待另一客户请求;
    (5)关闭服务器。
    客户方的启动过程如下:
    (1)打开一通信通道,并连接到服务器所在主机的特定端口:
    (2)向服务器发服务请求报文,等待并接收应答,继续提出请求;
    (3)请求结束后关闭通信通道并终止。
    从上面所描述过程可知:
    (1)客户与服务器进程的作用是非对称的,因此编码不同;
    (2)服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。
    值得注意的是,该题没有给出完整的Java服务程序代码,考查考生对Socket通信的基本过程的理解,要求熟悉Socket传送数据的基本方法。程序给出对Response和 Request对象的定义和2个对象的方法定义,但是方法的具体的功能一定要注意看语句后面的注释,要填空的地方的信息也来自于后面注释的信息。Java程序是区分大小写的,所以一定要弄清楚什么地方指的是类,什么地方是类的实例。因为类和类的实例的拼写通常就是只有大小写的区别。
    (1)空很明显,要求创建一个侦听端口为PORT的ServerSocket类型的对象,那么只要调用ServerSocket类的构造函数就可以了,具体的参数可以参照ServerSocket类的成员函数表中的格式调用。因此,(1)空应填ServerSocket(PORT)。
    (2)空的作用从注释中可知,是要创建来自客户端的连接套接字,从ServerSocket类的成员函数表中可知,其函数accept()的作用是返回建立连接的Socket类型的对象。因此,(2)空应填serverSocket.accept()。
    (3)空是创建输入流,从Socket类的主要成员函数表中可知getlnputStream()是返回当前对象关联的输入流。因此,(3)空应填getlnputStream()。
    (4)空是创建输出流,从Socket类的主要成员函数表中可知getOutputStream()是返回当前对象关联的输出流。因此,(4)空应填getOutputStream()。
    (5)空是解析客户端HTTP请求,在resopnse对象的成员函数表中可以知道 parse()的作用就是解析客户HTTP请求消息。因此,(5)空应填parse()。
    (6)空是解析客户端发送所请求的静态资源,在resopnse对象的成员函数表中可以找到对应的成员函数sendStaticResource()。因此,(6)空应填sendStaticResource()。
    (7)空关闭套接字,可以直接调用socket类的close()方法。因此,(7)空应填 socket.close()。
    (8)空要注意其作用是要获取HTTP中的URI的信息从而决定是否关闭服务器,在 Request对象的定义中可以发现有3个跟URl相关的成员函数,但是只有parseUri (string requestString)可以解析出其中的URI,但是该函数要求有一个输入的参数,所以必须要找出如何获得这个参数。在题目所给出的信息中,只有Request对象的另一个成员函数getUri()可以返回string类型的URI。因此,(8)空应填parseUri(getUri())。
    (9)空的要点在于必须了解服务器在本地运行的基本路径和端口。在题目最开始给出的请求消息示例信息中,可以看到这么一句,即host:localhost:8080,所以该服务器使用的不是标准端口,而是8080号。同样,在服务器主程序中定义的常量PORT也可以看出来。在下一个常量的定义WEB_ROOT=System.getProperty(“user.dir”)+File.separator+”webroot”中,不要被webroot迷惑,因为Web服务器本身会使用WEB_ ROOT作为根目录,至于根目录指向哪个文件夹只要在定义里面指定好就可以了,不要在 HTTP请求中再加上一个路径。因此,(9)空应填http;//localhost:8080/index.html。
    (10)空可依照此类推可知答案为http://localhost:8080/shutdown。

  • 第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


    正确答案:(1)ServerSocket(PORT)或serverSicket(PORT1InetAddress.getByName(“127.0.0.1”)) (2)serverSocket.accept()或其等价的带参数形式 (3)getInputStream()或其等价的带参数形式 (4)getOutputStream()或其等价的带参数形式 (5)parse()或其等价的带参数形式 (6)sendStaticResource()或其等价的带参数形式 (7)socket.close() (8)getUrl()
    (1)ServerSocket(PORT)或serverSicket(PORT,1,InetAddress.getByName(“127.0.0.1”)) (2)serverSocket.accept()或其等价的带参数形式 (3)getInputStream()或其等价的带参数形式 (4)getOutputStream()或其等价的带参数形式 (5)parse()或其等价的带参数形式 (6)sendStaticResource()或其等价的带参数形式 (7)socket.close() (8)getUrl() 解析:这是一道要求读者掌握Socket通信的基本模型和Java的基本调用方法的综合分析题。本题的解答思路如下。
    基于Socket的客户/服务器通信模式的基本模型。在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server Model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于两点:①建立计算机网络的原因是网络中软硬件资源运算能力和信息不均等,需要进行资源共享,从而需要拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用;②网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,也不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步。
    客户/服务器模式在操作过程中采取的是主动请求方式。首先,服务器方要先启动,并根据请求提供相应服务。服务器方的操作过程如下。
    1)打开一通信通道并告知本地主机,它愿意在某一公认地址上(即默认端口,如HTTP为80)接收客户请求;
    2)等待客户请求到达该端口:
    3)接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一个新进程来处理这个客户请求,新进程处理此客户请求,并不需要对其他请求做出应答。服务完成后,关闭此新进程与客户的通信链路,并终止:
    4)返回第2)步,等待另一客户请求:
    5)关闭服务器。
    客户方的操作过程如下。
    1)打开一个通信通道,并连接到服务器所在主机的特定端口:
    2)向服务器发送服务请求报文,等待并接收应答,继续提出请求;
    3)请求结束后关闭通信通道并终止。
    从以上C/S操作过程可知,客户与服务器进程的作用是非对称的,因此双方各自的编码不同;服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。
    由于本试题没有给出完整的Java服务程序代码,因此需要考生对Socket通信的基本过程理解,要求熟悉Socket传送数据的基本方法。程序给出了对Response和Request对象的定义和两个对象的方法定义,但是方法的具体功能一定要注意看语句后面的注释,(1)~(8)空缺处所填写的内容也来自于后面注释的信息。另外,由于Java程序是区分大小写的,因此一定要弄清楚什么地方指的是类,什么地方是类的实例。因为类和类的实例的拼写通常就只有大小写的区别。
    第(1)空缺处要求创建侦听端口号为PORT的ServerSocket类型的对象,那么只要调用ServerSocket类的构造函数就可以了,具体的参数可以参照表6-16中ServerSocket类构造函数的格式调用。因此(1)空缺处所填写的内容是“ServerSocket(PORT)”或“ServerSocket(PORT,1,InetAddress.getByName(“127.0.0.1”))”。
    由(2)空缺处的注释内容可知,该空缺处所填写内容的作用是要创建来自客户端的连接套接字。从 ServerSocket类的成员函数表(见表6-16)中可知,其函数accept()的作用是返回建立连接的Socket类型的对象。因此(2)空缺处所填写的内容是“serverSocket.accept()”或其等价的带参数形式。
    第(3)空缺处是要创建输入流,从Socket类的主要成员函数表(见表6-17)中可知,函数getInputStream()是返回当前对象关联的输入流。因此(3)空缺处应填入“getInputStream()”或其等价的带参数形式。
    第(4)空缺处是要创建输出流,从表6-17中Socket类的getOutputStream()函数功能说明可知,getOutputStream()是返回当前对象关联的输出流。因此(4)空缺处应填入“getOutputStream()”或其等价的带参数形式。
    第(5)空缺处是解析客户端HTIP请求,在Request.java程序中关于Request对象成员函数说明,语句“public void parse(){...parseUrl();...)”声明了,函数parse()的作用就是解析客户端HTTP请求消息。因此(5)空缺处所填写的内容是“parse()”或其等价的带参数形式。
    第(6)空缺处是解析客户端发送所请求的静态资源,在Response.java程序中关于Response对象成员函数说明中,语句"public void sendStaticResource()throwsIOException{...}“声明了,函数sendStaticResource()的作用就是向客户端发送所请求的静态资源。因此(6)空缺处应填入“sendStaticResource()”或其等价的带参数形式。
    第(7)空缺处是关闭套接字,可以直接调用Socket类的close()方法,即该空缺处所填写的内容是“socket.close()”。
    第(8)空缺处要注意到其作用是要获取HTFP中的URL信息,从而决定是否关闭服务器。在Request.java程序关于Request对象成员函数的定义中,有3个与URL相关的成员函数。但是只有parseUrl(String requestString)可以解析出其中的URL,并且该函数要求有一个输入的参数,因此必须找出如何获得这个参数的方法。在题目所给出的信息中,只有Request对象的另一个成员函数getUrl()可以返回String类型的URL。因此(8)空缺处所填写的内容是“getUrl()”。

  • 第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) 。


    正确答案:
    ●试题四【答案】(1)ServerSocket(PORT)或ServerSocket(PORT,1,InetAddress.getByName("127.0.0.1"))(2)serverSocket.accept()(3)getlnputStream()(4)getOutputStream()(5)Response(output)(6)sendStaticResource()(7)socket.close()(8)printStackTrace()(9)http://localhost:8080/index.html或http://127.0.0.1:8080/index.html(10)http://localhost:8080/shutdown或http://127.0.0.1:8080/Shutdo

  • 第6题:

    ServerSocket类和Socket类主要完成TCP程序设计。


    正确答案:正确

  • 第7题:

    用Java程序实现流式socket通信,需要使用哪两个类?它们是如何定义的?怎样使用?


    正确答案:一个是ServerSocket类,另一个是Socket类。
    当使用ServerSocket(intport)创建一个ServerSocket对象时,port参数传递端口号,这个端口就是服务器监听连接请求的端口。接下来服务程序进入无限循环之中。无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。
    当客户程序需要与服务器程序通信时,客户程序在客户机创建一个socket对象。如果创建了一个Socket对象,那么它可能通过调用Socket的getInputStream()方法从服务程序获得输入流读传送来的信息,也可能通过调用Socket的getOutputStream()方法获得输出流来发送消息。

  • 第8题:

    查看bep1主机与前台n7server的连接情况,需要inaccess接入到manager当中,执行命令()

    • A、socket –smp
    • B、socket –smsc
    • C、socket –ssp
    • D、socket –sms

    正确答案:C

  • 第9题:

    下面正确的创建 Socket 的语句是()

    • A、 Socket a  =  new Soeket(80):
    • B、 Socket b  =  new Socket("130. 3. 4. 5", 80):
    • C、 ServerSocket c  =  new Socket(80)
    • D、 ServerSocket d =  new Socket ("130. 3. 4, 5", 80)

    正确答案:C

  • 第10题:

    单选题
    关于Socket通讯正确的是()。
    A

    服务器端需要ServerSocket需要绑定端口号

    B

    服务器端需要ServerSocket需要绑定端口号和IP地址

    C

    客户端需要Socket,需要绑定端口号

    D

    客户端需要ServerSocket,需要绑定端口号


    正确答案: C
    解析: 暂无解析

  • 第11题:

    多选题
    建立Socket类的客户端需要哪些步骤?()
    A

    如果连接成功,则可以通过此Socket对象进行通讯;

    B

    如果连接成功,则重新创建一个Socket对象用于通讯;

    C

    向指定的IP地址和端口号进行连接尝试;

    D

    创建一个Socket对象;

    E

    首先通过网络扫描工具扫描服务器端是否已经开通;


    正确答案: E,A
    解析: 暂无解析

  • 第12题:

    判断题
    ServerSocket类和Socket类主要完成TCP程序设计。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第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;


    正确答案:(1)ServerSocket(PORT)或ServerSocket(PORT1InetAddress.getByName (“127.0.0.1”)) (2)serverSocket. accept( ) (3)8etlnputStream( ) (4)getOutputStream( ) (5)Response(output( ) (6)sendStaticResource( ) (7)socket. close( ) (8)printStackTrace( ) (9)hnp://localhost:8080/index.html或http://127.0.0.1:8080/ index.html. (10)http://localhost:8080/shutdown或http://127.0.0.1: 8080/Shutdo
    (1)ServerSocket(PORT)或ServerSocket(PORT,1,InetAddress.getByName (“127.0.0.1”)) (2)serverSocket. accept( ) (3)8etlnputStream( ) (4)getOutputStream( ) (5)Response(output( ) (6)sendStaticResource( ) (7)socket. close( ) (8)printStackTrace( ) (9)hnp://localhost:8080/index.html或http://127.0.0.1:8080/ index.html. (10)http://localhost:8080/shutdown或http://127.0.0.1: 8080/Shutdo

  • 第14题:

    在java.net包中提供了两个类______和ServerSocket,这两个类分别用来表示双向连接的客户端和服务端。

    A.ClientSocket

    B.Socket

    C.clientsocket

    D.socket


    正确答案:B

  • 第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);


    正确答案:(1) ServerSocket(PORT)或ServerSocket(PORT1 InetAddress.getByName( "127.0.0.1" ) ) (2) serverSocket.accept( ) (3) getlnputStream( ) (4) getOutputStream( ) (5) parse( ) (6) sendStaticResource( ) (7) socket.close( ) (8) getUri( ) (9) http://localhost:8080/i
    (1) ServerSocket(PORT)或ServerSocket(PORT,1, InetAddress.getByName( "127.0.0.1" ) ) (2) serverSocket.accept( ) (3) getlnputStream( ) (4) getOutputStream( ) (5) parse( ) (6) sendStaticResource( ) (7) socket.close( ) (8) getUri( ) (9) http://localhost:8080/i

  • 第16题:

    下列关于ServerSocket类的说法,错误的是?()

    A.ServerSocket类是被final关键字修饰的类,因此没有子类

    B.ServerSocket类用于表示服务器端

    C.ServerSocket类中的accept()方法会阻塞

    D.创建ServerSocket对象时可以指定需绑定到的端口


    答案:A
    解析:ServerSocket类是一个普通方法,没有被final关键字所修饰,它有一个直接已知子类是SSLServerSocket

  • 第17题:

    建立Socket类的客户端需要哪些步骤?()

    • A、如果连接成功,则可以通过此Socket对象进行通讯;
    • B、如果连接成功,则重新创建一个Socket对象用于通讯;
    • C、向指定的IP地址和端口号进行连接尝试;
    • D、创建一个Socket对象;
    • E、首先通过网络扫描工具扫描服务器端是否已经开通;

    正确答案:A,C,D

  • 第18题:

    Socket的工作步骤分为:创建Socket、打开连接到Socket的输入/输出流、按某个协议对Socket进行读/写操作、()


    正确答案:关闭Socket

  • 第19题:

    与流式socket相比,数据报通信有何特点?


    正确答案:UDP协议的全称是用户数据报(UserDatagramProtocal),在网络中它与TCP协议一样用于处理数据报。在OSI模型中,UDP位于第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。也就是说,当报文发送之后,是无法得知其是否安全完整到达的。所以它是一个面向非连接的应用,而Socket则是面向连接的应用。

  • 第20题:

    使用UDP协议通信时,需要使用哪个类把要发送的数据打包()

    • A、Socket辣Cm05 3136t0 www
    • B、DatagramSocket
    • C、DatagramPacket
    • D、ServerSocket

    正确答案:C

  • 第21题:

    问答题
    用Java程序实现流式socket通信,需要使用哪两个类?它们是如何定义的?怎样使用?

    正确答案: 一个是ServerSocket类,另一个是Socket类。
    当使用ServerSocket(intport)创建一个ServerSocket对象时,port参数传递端口号,这个端口就是服务器监听连接请求的端口。接下来服务程序进入无限循环之中。无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。
    当客户程序需要与服务器程序通信时,客户程序在客户机创建一个socket对象。如果创建了一个Socket对象,那么它可能通过调用Socket的getInputStream()方法从服务程序获得输入流读传送来的信息,也可能通过调用Socket的getOutputStream()方法获得输出流来发送消息。
    解析: 暂无解析

  • 第22题:

    单选题
    下面正确的创建 Socket 的语句是()
    A

     Socket a  =  new Soeket(80):

    B

     Socket b  =  new Socket(130. 3. 4. 5, 80):

    C

     ServerSocket c  =  new Socket(80)

    D

     ServerSocket d =  new Socket (130. 3. 4, 5, 80)


    正确答案: B
    解析: 暂无解析

  • 第23题:

    问答题
    与流式socket相比,数据报通信有何特点?

    正确答案: UDP协议的全称是用户数据报(UserDatagramProtocal),在网络中它与TCP协议一样用于处理数据报。在OSI模型中,UDP位于第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。也就是说,当报文发送之后,是无法得知其是否安全完整到达的。所以它是一个面向非连接的应用,而Socket则是面向连接的应用。
    解析: 暂无解析