我的服务端代码
ServerSocket server = null; try { server = new java.net.ServerSocket(2002); System.out.println("Server Create Ok"); System.out.println("waiting client connecting..."); while (true) { try { Socket socket = server.accept(); socket.setKeepAlive(true); //将线程加入到线程池,执行处理方法 if (socket != null) { MyServerSocket clientSocket = new MyServerSocket(); // getClientMessage clientSocket.setSocket(socket); // Thread thread = new Thread(clientSocket); pool.execute(clientSocket); } } catch (IOException e) { System.out.println("CreateSecondPort ............."); e.printStackTrace(); } } } catch (IOException e) { System.out.println("Address already in use!"); } finally { if (server != null) { try { server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客户端是客户的设备,我这边控制不到,在他们的服务器上已经实现了长连接,我这边当客户端数据发送完之后,空闲一分钟左右就自动断开了,捕获到 socket is closed 异常,另外客户端是有心跳检测的,不过他们的心跳检测设置的比较长是5分钟,有时候能够收到心跳包,我这边也回复了客户端。
请大神指点下我改怎么处理
怎么没有人回复呢
当客户端退出后把流关闭,当前客户端也关掉,服务器不要关闭,当然线程也要关闭。