我正在建立某种客户端-服务器连接。客户端可以连接到多个服务器,因此需要知道该服务器是否在线。我想要一个 JLabel 来显示服务器是否在线,而不是首先输入所有登录信息。如何在不与服务器建立真正连接的情况下检查这一点?
问问题
5304 次
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
请注意,这将检查服务器是否可访问,而不是特定 URL/服务是否可用。为此,您最好提出测试请求。
于 2013-05-12T18:34:20.923 回答