В Java нет примитивов для ICMP и traceroute. Как это преодолеть? По сути, я создаю код, который должен работать в * nix и Windows, и мне нужен фрагмент кода, который будет работать на обеих платформах.
Как использовать ICMP и трассировку в Java
Ответы (2)
Вот что я написал сегодня, чтобы «реализовать» команду трассировки маршрута в Java. Я тестировал только в Windows, но он должен работать и в Linux, хотя есть несколько инструментов traceroute, доступных для Linux, поэтому, скорее всего, должны быть некоторые проверки существования этих программ.
public class NetworkDiagnostics{
private final String os = System.getProperty("os.name").toLowerCase();
public String traceRoute(InetAddress address){
String route = "";
try {
Process traceRt;
if(os.contains("win")) traceRt = Runtime.getRuntime().exec("tracert " + address.getHostAddress());
else traceRt = Runtime.getRuntime().exec("traceroute " + address.getHostAddress());
// read the output from the command
route = convertStreamToString(traceRt.getInputStream());
// read any errors from the attempted command
String errors = convertStreamToString(traceRt.getErrorStream());
if(errors != "") LOGGER.error(errors);
}
catch (IOException e) {
LOGGER.error("error while performing trace route command", e);
}
return route;
}
person
carlin.scott
schedule
22.01.2013
Условие следует изменить на os.toLowerCase().contains(win)
- person Hassan; 12.09.2015
где вы использовали метод convertStreamToString?
- person Omore; 25.01.2018
@Omore, ты спрашиваешь, где это определено? Я думаю, что это пользовательский метод, который я написал. У меня больше нет доступа к коду, поэтому вам придется выяснить, как его реализовать. Если вы это сделаете, обновите мой ответ, чтобы включить его; Вы получите очки за это.
- person carlin.scott; 26.01.2018
Существуют разные способы реализации convertStreamToString: stackoverflow.com/questions/309424/
- person torno; 06.03.2018
Вам понадобится библиотека jpcap (возможно, SourceForge jpcap тоже работает) и используйте класс ICMPPacket для реализации желаемой функциональности.
Вот реализация Java traceroute с использованием библиотека jpcap.
person
bebbo
schedule
18.04.2016
Удалось ли кому-нибудь реализовать это с помощью JNI-библиотек libpcap? Я проверил jpcap и pcap4j, и оба они не должны использоваться людьми :-( Вам нужно иметь докторскую степень, чтобы использовать их правильно. И они разработаны не для разработчиков Java, нет инструкций по использованию в средах Java.
- person nickolay.laptev; 24.10.2019