java网络编程试卷及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
j a v a网络编程试卷及答案(总3页)
--本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小--
A1、Java网络程序位于TCP/IP参考模型的哪一层(
B) a) 网络层互联层b) 应用层c) 传输层网络d) 主机-网络层
2、以下哪些协议位于传输层(
A D) a) TCP b) HTTP c) SMTP d) UDP f)IP
3、一个服务器进程执行以下代码:ServerSocket serverSocket=new ServerSocket(80);Socket socket=(); int port=();以下哪些说法正确(
A C D) a) 服务器进程占用80端口。
b) ()方法返回服务器进程占用的本地端口,此处返回值是80。
c) 当()方法成功返回,就表明服务器进程接收到了一个客户连接请求。
d) ()方法返回客户端套节字占用的本地端口。
4、在客户/服务器通信模式中,客户与服务器程序的主要任务是什么(B C)a) 客户程序
在网络上找到一条到达服务器的路由。
b) 客户程序发送请求,并接收服务器的响应。
c)
服务器程序接收并处理客户请求,然后向客户发送响应结果。
d) 如果客户程序和服务器
都会保证发送的数据不会在传输途中丢失。
1、B 2、A D 3、A C D 4、B C
二、填空题(邮件)1、名词解释 SMTP:()
2、主要的SMTP命令
SMTP命令说明
()指明邮件发送者的主机地址
()指明邮件接收者的邮件地址
()表示接下来将发送邮件内容
1、简单邮件传输协议
2、HELP/EHLO MAIL FROM ECPT TO DATA
三、简答题(线程池)写出五种使用线程池时应注意的事项,并进行简要说明?
线程池可能会带来种种风险:1.死锁2.系统资源不足3.并发错误4.线程泄漏
5.任务过载
使用线程池时需要遵循以下原则:(1)如果任务A在执行过程中需要同步等待任务B
的执行结果,那么任务A不适合加入到线程池的工作队列中。
(2)如果执行某个任务
时可能会阻塞,并且是长时间的阻塞,则应该设定超时时间,避免工作线程永久的阻塞
下去而导致线程泄漏。
(3)根据任务的特点,对任务进行分类,然后把不同类型的任
务分别加入到不同线程池的工作队列中,这样可以根据任务的特点,分别调整每个线程
池。
(4)调整线程池的大小。
线程池的最佳大小主要取决于系统的可用CPU的数目以
及工作队列中任务的特点。
(5)避免任务过载。
四、JAVA对客户程序的通信过程进行了抽象,提供了通用的协议处理框架,请用UML图显示客户端协议处理框架的主要对象模型。
(20分)
五、编程题
用JAVA编写客户、服务器程序(利用ServerSocket和Socket编写)
1、创建EchoServer(写出主要程序代码并注释
2、输出流输入流通用方法
3、EchoServer类最主要方
法为service()方法,写出其方法中的代码。
4、写出创建EchoClient的构造方法 5、EchoClient类中,最主要的方法为talk()方法,写出其方法源代码。
public EchoServer() throws IOException {
serverSocket = new ServerSocket(port);
"服务器启动"); }
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = ();
return new PrintWriter(socketOut,true); }
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = ();
return new BufferedReader(new InputStreamReader(socketIn)); }
public void service() {
while (true) { Socket socket=null;
try { socket = (); etReuseAddress(true);
ind(new InetSocketAddress(port));
public void service() throws IOException{
(selector, );
while () > 0 ){ lose(); //关闭与这个SelectionKey关联的SocketChannel } }catch(Exception ex){();}
} }//#while }//#while}。