1

我在 Java 中使用ServerSocketandObjectOuputStream将我的项目的一些对象从客户端传输到服务器。我知道ServerSocketJava 中的类使用 TCP,因此不应丢弃任何数据包,但是如果客户端在流式传输对象的过程中崩溃会发生什么?我需要自己处理这个问题,还是 Java 会识别出来自流的对象是不完整的?

4

2 回答 2

2

根据断开连接的方式,您可能会在服务器上遇到几个异常之一。您的服务器可能会抱怨异常,例如Connection reset by peer. 是的,您的容器可以识别连接未正确终止。您的容器抛出的异常将表明这一点。

请注意,在某些情况下,客户端可能会完全传输您的对象,但服务器可能仍然无法获取它。位于两者之间的负载均衡器可能会出于未知原因切断连接。也考虑这些情况。

于 2012-10-28T14:03:32.023 回答
0

ServerSocket 没有中断。发送到 Socket 的数据被中断。ObjectInputStream.readObject() 方法将抛出 IOException 或可能永远阻塞,具体取决于故障模式。要避免后者,请在 Socket 上设置读取超时。然后它会抛出一个 SocketTimeoutException。

于 2012-10-28T21:13:11.420 回答