当JVM退出时,输出流是否会被刷新?

时间:2014-05-08 06:48:57

标签: java tcp jvm outputstream tcp-ip

我想知道在流关闭之前JVM退出时是否刷新输出流,即FIN位是否已设置且另一端的InputStream是否可以处理数据,即使发送的数据可能是也可能不是畸形?我确切需要的是,我想知道请求是否已成功发送。

1 个答案:

答案 0 :(得分:2)

  

我想知道当JVM退出时是否会刷新输出流

没有

  流关闭之前

流未关闭。任何尚未刷新的数据都将丢失。

  

即FIN位是否设置

这是一个完全不同的问题。操作系统将关闭套接字,发送已刷新的剩余数据,然后发送FIN。

  

并且另一端的InputStream可以处理数据,即使发送的数据可能有错误也可能没有错误?

这取决于您的代码。 InputStream将接收已刷新的任何数据,然后是EOS。

  

我确切需要的是,我想知道请求是否已经存在   发送成功。

那是另一个,完全不同,再次重要。如果您需要知道对等应用程序已收到数据,则需要在应用程序协议中向您发送确认。

基本思想是确保应用程序关闭您的流。