background image

 

资料来源:北软教育 

www.softedu.org

|专业的java  培训、网络培训、网络安全培训基地

 

 

   public void service() { 
     while (true) { 
       Socket socket=null; 
       try { 
         socket = serverSocket.accept();                                //从连接请求队列中取出一个
连接

 

         System.out.println("New connection accepted " + 
         socket.getInetAddress() + ":" +socket.getPort()); 
       }catch (IOException e) { 
          e.printStackTrace(); 
       }finally { 
          try{ 
            if(socket!=null)socket.close(); 
          }catch (IOException e) {e.printStackTrace();} 
       } 
     } 
   } 
   public static void main(String args[])throws Exception { 
     Server server=new Server(); 
     Thread.sleep(60000*10);                                               //睡眠 10 分钟 
     //server.service(); 
   } 

Client 试图与 Server 进行 100 次连接。在 Server 类中,把连接请求队列的长度设为 3。这
意味着当队列中有了

3 个连接请求时,如果 Client 再请求连接,就会被 Server 拒绝。下面

按照以下步骤运行

Server 和 Client 程序。 

1)把 Server 类的 main()方法中的“server.service();”这行程序代码注释掉。这使得服务器

8 000 端口绑定后,永远不会执行 serverSocket.accept()方法。这意味着队列中的连接请

求永远不会被取出。先运行

Server 程序,然后再运行 Client 程序,Client 程序的打印结果如

下:

 

1 次连接成功 

2 次连接成功 

3 次连接成功 

Exception in thread "main" java.net.ConnectException: Connection refused: connect 
         at java.net.PlainSocketImpl.socketConnect(Native Method) 
         at java.net.PlainSocketImpl.doConnect(Unknown Source) 
         at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
         at java.net.PlainSocketImpl.connect(Unknown Source) 
         at java.net.SocksSocketImpl.connect(Unknown Source) 
         at java.net.Socket.connect(Unknown Source) 
         at java.net.Socket.connect(Unknown Source) 
         at java.net.Socket.<init>(Unknown Source) 

UnRegister

ed