java处理终止socket“客户端”的正确方法是什么
我有socket服务/客户端应用程序。“服务器”正在等待来自“客户端”的数据,但如果客户端已终止,服务器将抛出EOFException
在服务器socket的代码中,我有:
private ObjectInputStream in;
我在某个地方读到了数据:
in.readObject();
所以我应该围在里面。readObject();在try catch block中还是有其他解决方案
你可以在下面搜索框中键入要查询的问题!
我有socket服务/客户端应用程序。“服务器”正在等待来自“客户端”的数据,但如果客户端已终止,服务器将抛出EOFException
在服务器socket的代码中,我有:
private ObjectInputStream in;
我在某个地方读到了数据:
in.readObject();
所以我应该围在里面。readObject();在try catch block中还是有其他解决方案
# 1 楼答案
你可以像下面这样使用
EOFException
是IOException
的一个直接子类。您还应该捕获IOException
# 2 楼答案
如果您在JavadocAPI中查找ObjectInputStream。readObject,您将看到异常列表
IOException(99%的时间是SocketException(IOException的子类))是套接字关闭的特例,因此您应该像断开连接一样处理它
但是,所有其他异常都表明您的客户正在向您发送您不期望的内容。您应该按名称捕获每个异常,并发回一条消息,说明它们需要将客户端软件版本更新为服务器准备好与之通信的版本。清除该消息,然后最好关闭套接字