新型java网络编程精解——孙卫琴.doc
还剩
29页未读,
继续阅读
下载文档到电脑,马上远离加班熬夜!
亲,喜欢就下载吧,价低环保!
内容要点:
对于线程池中空闲的工作线程,如果其闲置时间超过 TIMEOUT秒,就销毁该线程。8.用 Java实现一个采用用户自定义协议的文件传输服务器 FileServer和客户FileClient。当 FileClient发送请求“GET xxx.xxx”时,FileServer 就把xxx.xxx文件发送给 FileClient,FileClient 把该文件保存到客户端的本地文件系统中;当 FileCl3.9 练习题1.关于 ServerSocket构造方法的 backlog参数,以下哪些说法正确?(多选)A.backlog 参数用来显式设置操作系统中的连接请求队列的长度B.如果没有设置 backlog参数,那么连接请求队列的长度由操作系统决定C.当一个客户的连接请求被加入到服务器端的连接请求队列中时,就意味着客户端建立了与服务器的连接D.如果 backlog参数的值大于操作系统限定的队列的最下面按照以下方式运行 EchoServer、EchoClient 和 AdminClient,以观察 EchoServer 服务器的关闭过程。EchoClient 类的源程序参见本书第 1 章的 1.5.2 节的例程 1-3。(1)先运行 EchoServer,然后运行 AdminClient。EchoServer 与 AdminClient 进程都结束运行,并且在 AdminClient 的控制SocketException。EchoServer 的 service()方法捕获了该异常,在异常处理代码块中退出service()方法。l 如果 shutdownThread 线程已经执行了 executorService.shutdown()方法,而主线程正在执行 executorService.execute(…)方法,那么该方法会抛出 Rejected- ExecutionExcept executorService.execute(new Handler(socket));//可能会抛出 RejectedExecutionException}catch(SocketTimeoutException e){//不必处理等待客户连接时出现的超时异常}catch(RejectedExecutionException e){try{if(socket!=null)soc //等待关闭线程池,每次等待的超时时间为 30 秒while(!executorService.isTerminated())executorService.awaitTermination(30,TimeUnit.SECONDS);serverSocket.close(); //关闭与 EchoClient 客户通信的 ServerSocketlong endTime=S如例程 3-10所示是 EchoServer的源程序,其中关闭服务器的任务是由shutdown- Thread线程来负责的。例程 3-10 EchoServer.java(具有关闭服务器的功能) package multithread4;import java.io.*;import java.net.*;import java.util.concurrent.*;public clas等待客户发送的数据时,都可能会阻塞。可以通过以下方式设定超时时间:l 调用 ServerSocket 的 setSoTimeout(int timeout)方法,设定等待客户连接的超时时间,参见本章 3.5.1 节(SO_TIMEOUT 选项);l 对于每个与客户连接的 Socket,调用该 Socket 的 setSoTimeout(int timeout)方法,设定等待客户发送数据的超时时
发表评论
暂无评论,赶快抢占沙发吧。