【问题标题】:Ping an external server automatically every 30 mins [closed]每 30 分钟自动 Ping 外部服务器 [关闭]
【发布时间】:2014-02-20 06:06:46
【问题描述】:

我在列表中有一组服务器。我想每 30 分钟 ping 一次这些服务器。我怎样才能做到这一点。这是一个带有 java 代码的 jsp 程序。

【问题讨论】:

  • 除非您使用本机代码或外部进程,否则您无法在 Java 中执行“真正的 ping”(即 ICMP 回显请求)...
  • 用线程不行
  • 这个问题似乎跑题了,因为 OP 要求我们为他/她编写代码。

标签: java jsp networking network-programming


【解决方案1】:

此代码将在每 30 分钟后执行一次,以 ping 给定的 ip

    public boolean ping(String ip) throws IOException, InterruptedException  extends TimerTask {
     public void run{       
     boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win");

            ProcessBuilder processBuilder = new ProcessBuilder("ping", isWindows? "-n" : "-c", "1", ip`enter code here`);
            Process proc = processBuilder.start();
            BufferedReader in =
        new BufferedReader(
        new InputStreamReader(proc.getInputStream()));
        while (true) {
        String line = in.readLine();
        if (line == null)
        break;
        if(line.contains("Destination host unreachable")||line.contains("Request timed out")){

            return false;
            }
        }

            return true;
}

        }
// And From your main() method or any other method
Timer timer = new Timer();
 timer.schedule(new ping(ip), 0, (60*30*1000));

【讨论】:

  • 我必须手动运行才能ping...o此代码将在30分钟后自动ping
  • 以上代码是手动的,可以ping到服务器,但也可以通过线程在30分钟后执行。
  • 如何使用线程编写代码
  • 嘿伙计,看看如何使用线程,不可能给出完整的代码。
  • 那个,或者应用像 Quartz 这样适当的计时工具来为你处理线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
相关资源
最近更新 更多