在我的上一个项目之后,我遇到了客户端期望来自服务器的对象的问题,但在处理客户端输入时,出于安全原因强制服务器关闭套接字的异常被捕获。
这会导致客户端以非常不愉快的方式终止,我决定处理此问题的方式是在每次收到的输入后向客户端发送一个输入状态消息,以便他知道他的输入是否已正确处理或是否需要抛出异常。
所以我的问题:
答案 0 :(得分:2)
对于这样的事情:
答案 1 :(得分:2)
如果我理解正确,您已经从服务器端关闭了套接字,并且您需要客户端实现此功能并相应地处理错误。
查看Socket文档,特别是setSoTimeout
方法。例如,如果超时设置为5秒并且客户端尝试从服务器套接字读取并且他没有得到答案,则超时到期并且引发java.net.SocketTimeoutException
并且您可以捕获它并关闭插座。
您还可以使用ScheduledExecutorService
或Timer
来模拟超时。
答案 2 :(得分:1)
不正确的。只有当您尝试使用自己关闭的 时,才会出现该异常。
OP应该寻找的是EOFException或IOException:'connection reset',或者SocketTimeoutException。
答案 3 :(得分:0)
你真的不能,因为套接字已经关闭,你可以在客户端上监听
java.net.SocketException: socket closed
然后你会知道你丢失了与服务器的连接。