繁体   English   中英

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

[英]How to check if a server is online?

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

最好的方法是建立与服务器的真实连接,并使用与服务器实际使用尽可能相似的方法询问服务器是否在线。 其他方法会创建独立的故障模式,并且必须分别维护不同的方法,一个方法可能会失败,而其他方法会起作用。

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

尝试这样的东西来ping它:

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

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

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

只需连接。

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

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

使用InetAddress.isReachable

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM