• Реализация ICMP Ping на Java под Linux

    Losted
    @Losted
    Software Architect
    Про JNI, к сожалению, не знаю.

    А почему не подходит какая-нибудь кастомная обертка над isReachable (и потенциально даже над либой от Verax для совместимости), которая его «обасинхронит» и даст возможность пинговать любое количество хостов?

    С точки зрения наивной реализации это может быть как-то так:
    private ExecutorService executor;
    public Map<InetAddress, Future<Boolean>> pingHosts(List<InetAddress> addrs) {
        Map<InetAddress, Future<Boolean>> results = new HashMap<>();
        for (final InetAddress addr : addrs) {
            Future<Boolean> pingResult = executor.submit(new Callable<Boolean>() {
                @Override
                public Boolean call() throws Exception {
                    return addr.isReachable(10000);
                }
            });
            results.put(addr, pingResult);
        }
        return results;
    }
    
    Ответ написан
    2 комментария