目标:我想创建一个包含布尔值的java程序,每隔5分钟检查一下我的游戏服务器(cloudnine1999.no-ip.org:port 43594)
目的:重启我的游戏服务器(如果它崩溃)
问题:不确定如何使用java检查服务器是否在线。
程序功能:如果布尔值返回false(表示服务器处于脱机状态),我希望java程序打开一个特定的批处理文件,以便服务器启动(如果服务器崩溃)
我尝试在谷歌上找到一些东西,但我没有找到任何有用的东西,而且我不够高级的编码器来自己解决这个问题,我只需要有人指导我/指出我在右边使用java编写服务器状态检查器的方向,我可以从那里完成剩下的工作。
我可能无法在美国中部和加拿大时区下午4点左右回复您的答案。
答案 0 :(得分: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,服务器可能会被假定为死。然后,您需要启动服务器启动脚本。
答案 1 :(得分: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
重新启动它。