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