пинг с помощью InetAddress

99
27 апреля 2021, 19:20

Хочу сделать программу простую, которая пингует сервера. Работает так: InetAddress.getByName("123.123.123.123") и замеряю время с помощью System.currentTimeMills(). Проблема в том, что когда делаю замеры на пингующем сервере, получаю большое время пинга, но последующие запуски программы показывают малое время. Я полагаю, что эти замеры как-то кэшируются, либо к серверу компьютер быстро подключается. В общем вопрос такой почему так происходит?

import java.net.InetAddress;
import java.net.UnknownHostException;
class Main {
    public static void main(String[] args) throws UnknownHostException {
        long t = System.currentTimeMillis();
        InetAddress a = InetAddress.getByName("68.251.250.193");
        a.getHostName();
        System.out.println(System.currentTimeMillis() - t);
        long m = System.currentTimeMillis();
        InetAddress x = InetAddress.getByName("104.128.206.123");
        x.getHostName();
        System.out.println(System.currentTimeMillis() - m);
    }
}
Answer 1

Используйте InetAddress.isReachable() для проверки доступности сервера.

import java.io.IOException;
import java.net.InetAddress;
class Main {
    private static final int TIMEOUT = 3 * 1000;
    private static boolean ping(String addr) {
        try {
            InetAddress address = InetAddress.getByName(addr);
            return address.isReachable(TIMEOUT);
        } catch (IOException exc){
            return false;
        }
    }
    public static void main(String[] args) {
        long t = System.currentTimeMillis();
        if (ping("68.251.250.193"))
            System.out.println("Сервер доступен");
        else
            System.out.println("Сервер недоступен");
        System.out.println(System.currentTimeMillis() - t);
    }
}
READ ALSO
ошибка в procfile heroku

ошибка в procfile heroku

после запуска приложения на heroku (telegram бот без использования спринга, собираемый с помощью maven) где то через минуту работы оно крашитсяЯ так...

98
Консоль показывает разную длину одного массива в разных местах

Консоль показывает разную длину одного массива в разных местах

Как это возможно и как от этого избавиться? Использую состояние React

85
Убрать кнопку Пробки на Яндекс карте JS

Убрать кнопку Пробки на Яндекс карте JS

Каким образом можно убрать эту кнопку? Я нашел в документации код, но как его написать правильно непонятно:

110
Игра “Black Jack” на Javascript [закрыт]

Игра “Black Jack” на Javascript [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

126