作家:
socket.setSendBufferSize(1);
socket.setTcpNoDelay(true);
writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
次のように使用されます。
try {
writer.write(packet.toXML());
writer.flush();
...
}
catch (Exception ioe){
if (!done) {
done = true;
...
}
}
これはクライアント側のコードです。サーバーがソケット(Javaコードも)を切断すると、クライアントが5〜10分後にのみスローするのはなぜですか?デッド接続を上書きする最初の試みでスローするべきではありませんか?
ありがとう
編集:
サーバーをシャットダウンした後のTCPの状態は次のとおりです。
tcp 0 0 server:443 client:50283 FIN_WAIT2
tcp4 0 0 cient.50283 server.443 CLOSE_WAIT
Edit2:
クライアントはAndroidアプリケーションです。電話から実行され、書き込まれた2番目のパケットがスローを引き起こします。エミュレーター(下のMac)から実行すると、4番目のwrite()がスローされます。