-1

目标:我想制作一个包含布尔值的 java 程序,它每 5 分钟检查一次以查看我的游戏服务器是否 (cloudnine1999.no-ip.org:port 43594)

目的:在我的游戏服务器崩溃时重新启动它

问题:不确定如何使用 java 检查服务器是否在线。

程序功能:如果布尔返回false(意味着服务器离线)我希望java程序打开一个特定的批处理文件以便服务器启动(以防服务器崩溃)

我试图在谷歌上找到一些东西,但我没有找到任何有用的东西,而且我的编码员还不够先进,无法自己解决这个问题,我需要的只是有人指导我/指出我正确的编码方向一个带有 java 的服务器状态检查器,我可以从那里完成其余的工作。

在美国和加拿大中部时区下午 4 点左右之前,我可能无法回复您的答案。

4

2 回答 2

0

Shell脚本解决方案:

我假设服务器是 Java EE 服务器。服务器由 Windows 上的“bat”或 Linux/Unix 上的“shell”脚本启动。对于 UNIX/LINUX:最简单的解决方案是在服务器启动的 SHELL 脚本中编写一个逻辑,以便在服务器启动时将 JVM 的 PID 记录在一个文件中。然后编写一个简单的 shell 脚本来监控使用命令“ps -aef | grep”记录的 PID。如果 PID 不存在,则启动服务器。您应该以在其原始位置启动服务器的同一用户身份运行此脚本。第二种解决方案是“ps auxww | grep java”。请注意标识您的服务器的服务器变量。如果你运行命令,你就会知道。

Java解决方案:

每个服务器都有一个可以使用 HTTP URL 监控的管理端口。哦,你也可以点击应用程序网址。使用 Java 程序,您可以测试连接。如果 HTTP 响应代码是 200 - 你很好,如果它不是 200 像 - 500 / 400 ,服务器可能会被认为是死的。然后你需要启动服务器启动脚本。

于 2013-02-14T16:49:07.920 回答
0

用于Socket检查服务器是否启动(如果它可以连接到 IP 和端口而不抛出异常)。小心,有些服务器不喜欢这些“空”连接。

try{
    new Socket("cloudnine1999.no-ip.org", 43594).close();
}catch(IOException ex){
    // Server probably down, restart it...
}catch(Exception ex){
    // Some  other problem, likely DNS or security related.
}

用于ProcessBuilder重新启动它。

于 2013-02-14T16:51:57.613 回答