gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:53 25 4
gpt4 key购买 nike

我们已将服务器上的 TCP KeepAlive 时间从默认的 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

关于Java KeepAlive 检查程序不为 .checkError 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com