【发布时间】:2016-12-08 14:00:35
【问题描述】:
我想检查服务器应用程序是否可用。服务器启动后,我想停止检查,直到服务器更改状态。如何用我的代码做到这一点:
private static final String SERVER_ADDRESS = "192.144.10.10";
private static final int TCP_SERVER_PORT = 8890;
private static boolean connected = false;
static Socket s;
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(task, 01, 5001); }
static TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
if (connected == false)
{
System.out.println(hostAvailabilityCheck());
}
}
};
public static boolean hostAvailabilityCheck()
{
boolean available = true;
try {
if (connected == false)
{ (s = new Socket(SERVER_ADDRESS, TCP_SERVER_PORT)).close();
}
}
catch (UnknownHostException e)
{ // unknown host
available = false;
s = null;
}
catch (IOException e) { // io exception, service probably not running
available = false;
s = null;
}
catch (NullPointerException e) {
available = false;
s=null;
}
return available;
}
有没有更好的方法来解决这个问题?
【问题讨论】:
-
静态字段
connected似乎没什么用,因为你永远不会改变它 -
好吧,这将检查主机/端口对是否可用,但它不会检查任何功能......可能是后面的服务软件是 fubar 并且总是返回 500 用于 HTTP,因为实例
-
这可以帮助你stackoverflow.com/questions/9552743/… 你的 URL(URL_TO_APPLICATION) 可以是 SERVER_ADDRESS + TCP_SERVER_PORT 也可以看到这个coderanch.com/t/205709/sockets/java/check-server
-
您在检查什么,物理服务器的可用性,或在其上运行的应用程序,如 Tomcat?