2

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

4

5 回答 5

7

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

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

于 2013-05-12T18:41:43.700 回答
1

尝试这样的事情来ping它:

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

  if (address.isReachable(3000)) 
      label.setName("online")
于 2013-05-12T18:34:26.830 回答
0

只需连接。

发现任何资源是否可用的最好方法是尝试使用它。这适用于网络连接、文件以及任何你喜欢的东西。编写辅助测试来执行其他操作,如isReachable(), exists(),isWritable()等,充其量只是重复系统在使用资源时无论如何都会做的事情,最坏的情况是做一些不同的事情,可能会产生不同的结果。

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

于 2013-05-13T01:27:18.637 回答
0

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

于 2013-05-12T18:34:09.673 回答
-1

利用InetAddress.isReachable

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

于 2013-05-12T18:34:20.923 回答