我想知道TCP连接何时丢失(未关闭),例如服务器意外关闭时。所以我用outputStream.write(s)发送数据;当连接丢失并且我m trying send data it should throws
SocketException`时。但它只在第二次发送数据后抛出。为什么会这样。
void send_socket(){
try{
outputStream = socket.getOutputStream();
outputStream.write(MSG.getBytes());
} catch (SocketException e){
Log.e(TAG, "connection closed");
}
catch (IOException e){
Log.e(TAG, "error 3 - ", e);
}
}
答案 0 :(得分:0)
检测断开连接或拉入TCP的最佳形式是等待IoException发生并采取适当的操作。 TCP可以为您提供便利的唯一方法就是当另一个发送FIN时最终返回-1并告诉用户该连接已被EOFException关闭,我相信你现在已经发现了。
编辑:感谢您的纠正。我忘了更清楚一点。