public static void main(String args[]){
byte[] message = ...
Socket socket = ...
DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
dOut.write(message); //#1
dOut.close();
socket.close();
}
假设第 1 行将数据放入缓冲区等待刷新到远程机器。之后,流和套接字关闭。
我们假设,在发送过程中,网络发生了一些未知的问题,我们的操作系统会重新发送缓冲区中的数据包,直到 TCP 重传超时。
我想知道如何在 Java 程序中捕获这个异常?因为上面的代码已经将数据发送到缓冲区并且可能关闭了流和套接字(并且可能退出了 Java 主体),所以将所有其他工作(与 TCP 相关的,重新传输)留给了操作系统。
我的问题是,即使 Java 程序退出,TCP 重新传输(我们假设数据包丢失)会继续吗?捕获重新传输超时错误的最佳方法是什么?