大学MOOC 网络程序设计(鲁东大学)1451716161 最新慕课完整章节测试答案
01概述
第1章概述单元测验
1、多选题:
以下哪些类是基于TCP协议的?
选项:
A: Socket
B: ServerSocket
C: DatagramSocket
D: DatagramPacket
答案: 【 Socket;
ServerSocket】
2、多选题:
语句BufferedReader in = new BufferedReader( new InputStreamReader( clientSocket.getInputStream())),从网络读入的是:
选项:
A: in收到的是字符数据
B: in收到的是字节数据
C: getInputStream()返回的是字节数据
D: getInputStream()返回的是字符数据
答案: 【 in收到的是字符数据;
getInputStream()返回的是字节数据】
3、多选题:
对于ServerSocket与Socket,描述正确的是:
选项:
A: ServerSocket只能侦听连接,不能收发数据
B: Socket只能收发数据,不能侦听连接
C: 服务器端既需要ServerSocket,也需要Socket
D: 二者可以相互替代
答案: 【 ServerSocket只能侦听连接,不能收发数据;
Socket只能收发数据,不能侦听连接;
服务器端既需要ServerSocket,也需要Socket】
4、多选题:
关于Java线程,以下描述正确的是:
选项:
A: 线程执行start( )方法后转入线程启动完成状态。
B: 当获得CPU使用权进入run( )方法时,转入线程正在运行状态。
C: 如果在run( )方法结束之前,遇到wait()方法、sleep()方法、join()方法时,会转入线程休止阻塞状态。
D: 线程死亡状态即结束状态,线程任务结束或异常退出,线程死亡。
答案: 【 线程执行start( )方法后转入线程启动完成状态。;
当获得CPU使用权进入run( )方法时,转入线程正在运行状态。;
如果在run( )方法结束之前,遇到wait()方法、sleep()方法、join()方法时,会转入线程休止阻塞状态。;
线程死亡状态即结束状态,线程任务结束或异常退出,线程死亡。】
5、多选题:
以下步骤属于客户机的通信逻辑的是:
选项:
A: 客户机需要创建一个会话套接字
B: 若果是TCP协议通信,客户机连接服务器,访问服务器指定的地址和端口,用connect()方法。
C: 通信过程结束,客户机需要关闭输入流、输出流和套接字。
D: 客户机必须首先向服务器发起会话
答案: 【 客户机需要创建一个会话套接字;
若果是TCP协议通信,客户机连接服务器,访问服务器指定的地址和端口,用connect()方法。;
通信过程结束,客户机需要关闭输入流、输出流和套接字。】
6、多选题:
以下步骤属于服务器通信逻辑的是:
选项:
A: 若果是基于TCP协议,服务器需要处于侦听连接状态,通过ServerSocket类绑定服务器的工作地址和端口
B: 若果是基于TCP协议,服务器需要处理客户机连接。用accept( )函数接受客户机连接
C: 服务器接受客户机连接后,服务器端会创建一个会话套接字,会话开始
D: 服务器总是首先向客户机发起会话
答案: 【 若果是基于TCP协议,服务器需要处于侦听连接状态,通过ServerSocket类绑定服务器的工作地址和端口;
若果是基于TCP协议,服务器需要处理客户机连接。用accept( )函数接受客户机连接;
服务器接受客户机连接后,服务器端会创建一个会话套接字,会话开始】
7、判断题:
简单的说,网络编程是编写能在网络上运行、实现网络服务的程序,网络程序通常分为客户端与服务器端两部分内容。
选项:
A: 正确
B: 错误
答案: 【 正确】
8、判断题:
浏览器、搜索引擎、在线支付模块是网络程序
选项:
A: 正确
B: 错误
答案: 【 正确】
9、判断题:
QQ、MSN、Twitter、阿里旺旺是网络程序,但是浏览器不是网络程序。
选项:
A: 正确
B: 错误
答案: 【 错误】
10、判断题:
迅雷、快车、电驴、百度云管家、CuteFTP是网络程序
选项:
A: 正确
B: 错误
答案: 【 正确】
11、判断题:
程序从数据源读取数据,再将数据传送到目的地,实现了数据的流动,其中数据从数据源流动到程序,称之输入流;从程序流动到目的地,称为输出流。
选项:
A: 正确
B: 错误
答案: 【 正确】
12、判断题:
字符流的数据形态是字符。字节流是二进制的,可以面向字符数据的读写,也可以是其他数据类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
使用复合流是为了提高数据存取效率或者为了提高编程效率。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
Java基本I/O是阻塞的,当线程执行到read()或write()时,该线程被阻塞,直到有数据可读或数据写入结束,线程在此期间不能向下执行其他任务。
选项:
A: 正确
B: 错误
答案: 【 正确】
15、判断题:
Java的NIO是非阻塞模式,当线程从某通道读取数据时,如果没有数据可用,则立即返回,此时线程可以继续执行其他任务。非阻塞写数据也是如此,线程在写入数据到通道期间,可以同时去做别的事情。
选项:
A: 正确
B: 错误
答案: 【 正确】
16、判断题:
Socket是一种网络通信接口,可以实现对TCP和UDP服务的调用。
选项:
A: 正确
B: 错误
答案: 【 正确】
17、判断题:
UDP协议不是面向连接的传输协议,不能保证数据按照顺序到达,无重传机制,会丢包、收到重复包、乱序等,所以在数据可靠性要求很高的场合,一般采用TCP协议。
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
线程是操作系统能够运算调度的最小单位,一个进程可以有多个线程,线程可以并发运行。以Windows系统为例,Windows的多任务调度策略是面向线程的,而不是面向进程的,而且线程是全局调度的。
选项:
A: 正确
B: 错误
答案: 【 正确】
19、判断题:
侦听套接字ServerSocket与Socket这两类套接字的区别是:前者只能用于侦听和建立连接,不能交换数据;后者则专用于数据交换,实现基于套接字的输入输出流。
选项:
A: 正确
B: 错误
答案: 【 正确】
02一客户一线程
第2章单元测验
1、单选题:
基于TCP的通信,服务器给客户机回复消息,回复地址与端口是何时确定的:
选项:
A: 客户机连接服务器时
B: 服务器成功接受客户机连接时
C: 客户机需要单独给服务器发送一条消息
D: 服务器需要在回复消息中指定客户机的地址与端口
答案: 【 服务器成功接受客户机连接时】
2、单选题:
执行clientThread.start()语句后,描述正确的是:
选项:
A: 线程clientThread立即启动并得到执行
B: 线程clientThread处于阻塞状态,不能立即被执行
C: 线程clientThread中的run()方法会立即被执行
D: 线程clientThread是否立即执行,由是否获得CPU时间片决定
答案: 【 线程clientThread是否立即执行,由是否获得CPU时间片决定】
3、单选题:
语句out=new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(),"UTF-8"),true)中的参数true表示:
选项:
A: 输出流会立即发送消息
B: 输出流会缓冲消息
C: 输出流采用UTF-8编码
D: 参数省略时默认值为true,故可省略该参数
答案: 【 输出流会立即发送消息】
4、单选题:
对事件响应函数private void formWindowClosing(java.awt.event.WindowEvent evt)描述正确的是:
选项:
A: 窗口关闭之前执行,可用于释放资源
B: 窗口关闭的过程中执行
C: 窗口关闭后执行
D: 以上说法都不对
答案: 【 窗口关闭之前执行,可用于释放资源】
5、单选题:
if (toClientSocket!=null) toClientSocket.close(),描述正确的是:
选项:
A: close()方法销毁套接字,释放资源
B: close()不会销毁套接字,只是关闭套接字
C: 程序结束时,close()方法不可以省略
D: 以上说法都不对
答案: 【 close()方法销毁套接字,释放资源】
6、单选题:
修改本章的服务器设计,将服务器监控面板中的消息保存到一个文件中,以下思路,拖累服务器性能最严重的是:
选项:
A: 在服务器界面上添加一个按钮,点击按钮后,将消息框中的内容写入文件中
B: 当服务器关闭时,在formWindowClosing()响应函数中完成消息的保存工作
C: 设计一个定时器,每隔一段时间自动保存服务器消息框中的消息,服务器退出时再保存一次
D: 每收到一条消息,即写入文件保存
答案: 【 每收到一条消息,即写入文件保存】
7、单选题:
对语句in=new BufferedReader(new InputStreamReader(toClientSocket.getInputStream(),"UTF-8"))描述正确的是:
选项:
A: toClientSocket.getInputStream()返回的是UTF-8字符流
B: InputStreamReader()返回的是二进制流
C: InputStreamReader()返回的UTF-8字符流
D: BufferedReader是二进制缓冲流
答案: 【 InputStreamReader()返回的UTF-8字符流】
8、多选题:
关于Runnable接口与Thread类,以下说法正确的是:
选项:
A: Runnable接口只有一个run()方法
B: run()方法没有参数
C: run()方法没有返回值
D: Thread类是一个抽象类,需要重写其run()方法
答案: 【 Runnable接口只有一个run()方法;
run()方法没有参数;
run()方法没有返回值;
Thread类是一个抽象类,需要重写其run()方法】
9、多选题:
clientSocket=new Socket(); clientSocket.connect(remoteAddr);对于上述两个语句的执行逻辑,描述正确的是:
选项:
A: 客户机的通信地址与端口是随机选择的
B: 服务器的通信地址与端口在remoteAddr变量中
C: 客户机与服务器的地址均在remoteAddr变量中
D: connect方法完成的是TCP握手过程
答案: 【 客户机的通信地址与端口是随机选择的;
服务器的通信地址与端口在remoteAddr变量中;
connect方法完成的是TCP握手过程】
10、多选题:
listenSocket=new ServerSocket(); listenSocket.bind(serverAddr); 对于上述两个语句的执行逻辑,描述正确的是:
选项:
A: listenSocket不能用于数据交换,只能处理连接信息
B: 服务器端只能有一个listenSocket
C: serverAddr中只包含服务器的工作地址,不包含端口信息
D: 可以在ServerSocket类的构造函数中指定地址和端口,省略bind()方法
答案: 【 listenSocket不能用于数据交换,只能处理连接信息;
可以在ServerSocket类的构造函数中指定地址和端口,省略bind()方法】
11、多选题:
服务器端的toClientSocket=listenSocket.accept()语句需要放在一个无限循环里面的原因是:
选项:
A: 保障服务器一直在线,做到有求(连接请求)必应
B: 防止连接中途断开
C: 不知道客户机连接何时到达,不知道有多少客户机连接到达
D: 需要时时检查连接状态
答案: 【 保障服务器一直在线,做到有求(连接请求)必应;
不知道客户机连接何时到达,不知道有多少客户机连接到达】
12、多选题:
服务器的会话线程中用while((recvStr=in.readLine())!=null)作为循环条件,目的是:
选项:
A: 可以保持服务器会话线程与远程客户机的会话持续到客户机断开连接为止
B: 保证收到的不是空消息
C: 一次读取一行信息,循环读取
D: readLine()是一个阻塞方法,如果客户机断开连接,则会收到null消息
答案: 【 可以保持服务器会话线程与远程客户机的会话持续到客户机断开连接为止;
一次读取一行信息,循环读取;
readLine()是一个阻塞方法,如果客户机断开连接,则会收到null消息】
13、多选题:
toClientSocket=listenSocket.accept()语句的执行逻辑,描述正确的是:
选项:
A: 当有新连接到达时,accept()方法会创建新的套接字
