【发布时间】:2013-03-20 16:47:11
【问题描述】:
应该如何处理客户端意外断开连接。除非客户端明确声明要关闭,否则我想保持服务器运行/侦听。
例如,我的服务器正在侦听,然后客户端关闭,这导致服务器的方法结束 - 我怎样才能让它返回到方法的开头?
serverSocket = new ServerSocket(port);
clientSocket = serverSocket.accept();
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BasicProtocol bp = new BasicProtocol(password);
out.println(bp.processInput(""));
String inputLine;
while((inputLine = in.readLine()) != null ){
System.out.println("Client asks: " + inputLine);
out.println(bp.processInput(inputLine));
}
如上,如果出现连接重置错误,如何等待重新连接?
【问题讨论】:
-
'导致服务器的方法结束' - 它是如何做到的?您的异常处理代码是什么样的?
-
@Eng.Fouad 所以你必须有多线程来处理这个?
-
显然是通过将该代码放入循环中。服务器是单线程的这一事实是这里唯一的另一个问题。
-
很明显不是吗?但这就是答案,有时您会想到简单的事情。