捕获异常后如何正确关闭套接字?

woo*_*roo 5 java sockets exception-handling

在我的上一个项目之后,我遇到了客户端期望来自服务器的对象的问题,但是在处理客户端输入时,出于安全原因强制服务器关闭套接字的异常被捕获.

这导致客户端以非常不愉快的方式终止,我决定处理这个问题的方式是在每次收到的输入后向客户端发送一个输入状态消息,以便他知道他的输入是否正确处理或者是否需要抛出异常.

所以我的问题:

  • 捕获异常后是否有更好/更清晰的方法来关闭套接字?

Lom*_*mbo 2

如果我理解正确的话,您已经从服务器端关闭了套接字,并且您需要您的客户端意识到这一点并相应地处理错误。

查看Socket文档,特别是该setSoTimeout方法。例如,如果超时设置为 5 秒,并且客户端尝试从服务器套接字读取数据但没有得到答复,则超时到期并java.net.SocketTimeoutException引发 a,您可以捕获它并关闭套接字。

您还可以使用 aScheduledExecutorService或 aTimer来模拟超时。