资料来源:北软教育
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