如何检查服务器是否在线?

时间:2013-05-12 18:31:11

标签: java networking

我正在进行某种客户端 - 服务器连接。客户端可以连接到多个服务器,因此需要知道该服务器是否在线。我想要一个JLabel来显示服务器是否在线,而不是先输入所有登录信息。如何在不与服务器建立真正连接的情况下进行检查?

5 个答案:

答案 0 :(得分:7)

最好的方法是与服务器建立真正的连接,并使用与实际使用服务器尽可能相似的方法询问它是否在线。其他方法会创建独立的故障模式和不同的方法,这些方法必须单独维护,而另一种方法可能会失败,而另一种方法也可以。

考虑代理和防火墙之类的东西。为什么让自己和每个必须使用你的系统的人都很难?除非你没有告诉我们一些非常不寻常的事情,否则没有充分的理由来创建一个完全不同的访问方法来测试可用性。

答案 1 :(得分:1)

尝试这样的方法来ping它:

   InetAddress address = InetAddress.getByName("address");

  if (address.isReachable(3000)) 
      label.setName("online")

答案 2 :(得分:0)

我不知道是否可以使用java ping服务器。但是您可以尝试在Main的构造函数中ping服务器的ip,如果它返回echo,则使标签更改其值。

答案 3 :(得分:0)

只需连接。

发现任何资源是否可用的最佳方法是尝试使用它。这适用于网络连接,文件,您喜欢的任何内容。编写执行其他内容(如isReachable()exists()isWritable()等)的辅助测试,最好只重复使用资源时系统要执行的操作,最坏情况做一些不同的事情,可能会产生不同的结果。

在任何一种情况下,您都会引入一个时间窗口,在此期间可用性可能会发生任何变化。

答案 4 :(得分:-1)

使用InetAddress.isReachable

请注意,这将检查服务器是否可访问,而不是特定的URL /服务是否可用。为此,您最好提出测试请求。