Java KeepAlive检查程序未为.checkError返回true

Java KeepAlive检查程序未为.checkError返回true,java,linux,sockets,serversocket,unix-socket,Java,Linux,Sockets,Serversocket,Unix Socket,我们已将服务器上的TCP保留时间从默认的7200秒降低到500秒。 我正试图编写一个小型java程序来检查服务器是否使用了这些更新的设置。 如果我从命令行手动对主机执行telnet,它将按预期超时。 当我运行这个程序时,if(out.checkError())应该返回true,但它没有返回。问题是什么 public class keepAlive5 { public static void main(String[] args) { // String serverNam

我们已将服务器上的TCP保留时间从默认的7200秒降低到500秒。
我正试图编写一个小型java程序来检查服务器是否使用了这些更新的设置。 如果我从命令行手动对主机执行telnet,它将按预期超时。 当我运行这个程序时,if(out.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

您需要写入足够的数据,以便填充套接字发送缓冲区,以便写入块,从而有可能检测到错误并将其传输回应用程序。否则,写入过程与应用程序是异步的,应用程序将在检测到错误之前关闭套接字


我不会使用
PrintWriter
来完成此任务。

多少数据就足够了?如果不是PrintWriter,您有什么建议?多少数据就足够了?如果不是PrintWriter,你有什么建议?