1
サーバーのTCPキープアライブ時間をデフォルトの7200秒から500秒に引き下げました。
私は、実際にこれらの更新された設定を使用していることを確認するために、小さなJavaプログラムを作成しようとしています。 コマンドラインから手動でホストにtelnetを実行すると、予想通りにタイムアウトします。 このプログラムを実行すると、if(out.checkError())はtrueを返しますが、そうではありません。何が問題なの?Java KeepAliveチェックプログラムが.checkErrorに対してtrueを返さない
public class keepAlive5 {
public static void main(String[] args) {
// String serverName = args[0];
//String serverName = args[0];
// int portNum = Integer.parseInt(args[1]);
// tstSocket.setKeepAlive(true);
int portNum = 5500;
int timeToWait = 600;
String serverName = “host1”;
try {
Socket tstSocket = new Socket(serverName, portNum);
PrintWriter out = new PrintWriter(tstSocket.getOutputStream(), true);
System.out.println("connected, now wait 10 minutes...");
TimeUnit.SECONDS.sleep(timeToWait);
System.out.println("Will now check the connection..");
out.write("try writing something");
out.flush();
if (!out.checkError()){
System.out.println("Socket closed by remote host");
}
} catch (Exception ex) {
//Exception
System.out.println("Unknown host..");
}
}
}
どのくらいのデータで十分でしょうか? PrintWriterでない場合は何をお勧めしますか? – Seattle427