Java ObjectOutputStream上的异常捕获
在我的软件中,我需要通过ObjectOutputStream在客户端和服务器之间发送消息 sender方法的核心如下所示:Java ObjectOutputStream上的异常捕获,java,ubuntu,client-server,objectoutputstream,Java,Ubuntu,Client Server,Objectoutputstream,在我的软件中,我需要通过ObjectOutputStream在客户端和服务器之间发送消息 sender方法的核心如下所示: .... try { objWriter.writeUnshared(bean); objWriter.flush(); } catch (Exception e) { .... } ... 在windows XP上运行我的应用程序时,如果删除网线,WriteUnShared会引发异常 现在,我正在尝试将我的应用程序运行到ubuntu 12.1
....
try {
objWriter.writeUnshared(bean);
objWriter.flush();
} catch (Exception e) {
....
}
...
在windows XP上运行我的应用程序时,如果删除网线,WriteUnShared会引发异常
现在,我正在尝试将我的应用程序运行到ubuntu 12.10中,如果我移除电缆,该方法不会抛出任何东西
任何提示???是否以及何时获得异常取决于:
- 您端的套接字发送缓冲区有多大
- 对等端的套接字接收缓冲区有多大
- 您已经写入了多少未确认的数据
- 你写那篇文章有多久了
- TCP堆栈的内部计时器
您可以从Java控制的唯一部分是您自己的套接字发送缓冲区。因此,异常何时以及是否交付是完全不可预测的。因此,您不能编写依赖于特定行为的应用程序。是的,但按照writeUnshared和flush调用的方法,我看到调用了write(OutputStream.class:106),如果流关闭,此方法必须生成异常。。。因此,我使用这些信息来检查我的频道是否处于活动状态。。问题是,在ubuntu中,即使我拔下电缆,频道似乎还是打开的 所以你想在ubuntu上也得到例外吗?是的。。如果出现异常,我需要重试发送。。并最终关闭连接!java.io.ObjectOutputStream,初始化为:“new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream())”@Fildor否,他没有使用NIO,他使用的是java.io.ObjectOutputStream。一个毫无意义的问题。@ejpooops。你说得对。在过去的几天里我在两者之间跳跃。。。