Домой Учебники по Java и J2EE Как реализовать свой собственный метод InetAddress.isReachable (String address, int port, int timeout)...

Как реализовать свой собственный метод InetAddress.isReachable (String address, int port, int timeout) в Java?

461
0

В Java есть несколько способов проверить ping и проверку порта. Вы можете использовать системную команду ping по умолчанию, нативный метод Java InetAddress полезность, HttpURLConnection и еще немного.

В производственной или тестовой среде, если вы хотите выполнить несколько проверок портов , скажем, сотни проверок одновременно, иногда InetAddress.isReachable() метод не получает правильный ответ .

Infect в моем случае, я заметил 100% сбой при попытке подключиться к www.google.com. Есть ли у вас какие-либо вопросы ниже?

  • Почему InetAddress.isReachable возвращает false, когда я могу пропинговать IP-адрес?
  • Как проверить, есть ли у меня подключение к интернету?
  • Примеры кода Java для java.net.InetAddress.isReachable ()
  • проверка Java, если IP-адрес доступен
  • Как проверить, доступна ли удаленная система?

Следуйте этому руководству, если вы хотите выполнить проверку ping с помощью HttpURLConnection.openConnection ()

В этом уроке мы рассмотрим 2 различных способа проверки Ping:

  1. InetAddress.isReachable (timeout) метод
  2. Crunchify-х crunchifyAddressReachable(host, port, timeout) метод, который работает 100% времени

Давайте начнем:

  1. Создайте класс CrunchifyInetAddressIsReachable.java.
  2. Мы создадим 2 метода pingCheckbyInetAddressisReachable () и pingCheckbyCrunchifyisReachable (), в которых мы выполним 2 выше различных теста .

Какой метод мы используем crunchifyAddressReachable ()?

Мы используем java.net.Socket в нашей реализации. Класс Socket реализует клиентские сокеты. С помощью connect() Утилита мы получаем 100% времени правильного результата. Пожалуйста, взгляните на приведенный ниже код для более подробной информации.

CrunchifyInetAddressIsReachable.java

CrunchifyInetAddressIsReachable.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
пакет crunchify. ком . учебник ;
импорт Java . Ио. IOException ;
импорт Java . нетто. InetAddress ;
импорт Java . нетто. InetSocketAddress ;
импорт Java . нетто. Гнездо ;
/ **
* @author Crunchify.com
* Проблема: иногда InetAddress.isReachable () дает ложный результат. Мы реализовали ту же проверку Reachable, используя Socket. Это работает почти в 100% случаев. Сравнение добавлено.
* Версия: 1.0
*
* /
общественности учебный класс CrunchifyInetAddressIsReachable {
статический строка хозяин знак равно www.google.com ;
общественности статический недействительным main ( Строка [ ] аргументы ) {
// проверяем пинг с помощью утилиты Java по умолчанию
pingCheckbyInetAddressisReachable ( ) ;
// проверяем пинг с помощью модифицированной утилиты Crunchify
pingCheckbyCrunchifyisReachable ( ) ;
}
частный статический недействительным pingCheckbyInetAddressisReachable ( ) {
пытаться {
InetAddress crunchifyAddr знак равно InetAddress . getByName ( host ) ;
логический достижимый знак равно crunchifyAddr . isReachable ( 2000 ) ;
если ( достижимо ) {
Система. вне. println ( InetAddress.isReachable (timeout) Result ==> Пинг успешно выполнен для хоста: + хост ) ;
} еще {
Система. вне. println ( InetAddress.isReachable (timeout) Result ==> Ошибка проверки связи для хоста: + хост ) ;
}
} ловить ( Исключение е ) {
эл . printStackTrace ( ) ;
}
}
частный статический недействительным pingCheckbyCrunchifyisReachable ( ) {
пытаться {
crunchifyAddressReachable ( хост , 80 , 2000 ) ;
Система. вне. println ( / nOverloaded isReachable (хост, порт, время ожидания) Результат ==> Пинг успешно выполнен для хоста: + хост ) ;
} ловить ( Исключение е ) {
Система. вне. println ( / nOverloaded isReachable (хост, порт, тайм-аут) Результат ==> Сбой проверки связи для хоста: + хост ) ;
}
}
/ *
* Переопределение метода InetAddress.isReachable () по умолчанию для добавления еще 2 аргументов порта и значения времени ожидания.
*
* Адрес: www.google.com
* порт: 80 или 443
* время ожидания: 2000 (в миллисекундах)
* /
частный статический логический crunchifyAddressReachable ( String адрес , ИНТ порт , ИНТ тайм-аут ) {
пытаться {
пытаться ( Сокет crunchifySocket знак равно новый Гнездо ( ) ) {
// Соединяет этот сокет с сервером с указанным значением времени ожидания.
crunchifySocket . подключиться ( новый InetSocketAddress ( адрес , порт ) , тайм-аут ) ;
}
// Возвращаем true, если соединение установлено
вернуть правда ;
} ловить ( Исключение IOException ) {
исключение. printStackTrace ( ) ;
// Возвращаем false, если соединение не установлено
вернуть ложь ;
}
}
}

Как только вы скопируете код в среду Eclipse , просто запустите приложение Java, чтобы увидеть результат ниже.

ЧИТАТЬ ТАКЖЕ:  Как поменять число в Java? Использование while Loop и Java Recursion методов

Консольный вывод:

1
2
3
InetAddress . isReachable ( 2000 ) Результат == > Пинг не удался для хост : www . Google. ком
Перегружен isReachable ( хост , порт , тайм-аут ) Результат == > Пинг успешен для хост : www . Google. ком
Как реализовать свой собственный метод InetAddress.isReachable (String address, int port, int timeout) в Java?

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь