Java no tiene primitivas para ICMP y traceroute. ¿Cómo superar esto? Básicamente estoy construyendo código que debería ejecutarse en * nix y Windows, y necesito un código que se ejecutará en ambas plataformas.Cómo ICMP y traceroutes en Java
6
A
Respuesta
4
Esto es lo que escribí hoy para "implementar" el comando trace route en Java. Solo he probado en Windows, pero también debería funcionar en Linux, aunque hay varias herramientas de traceroute disponibles para Linux, por lo que es muy probable que haya algunos controles para la existencia de esos programas.
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;
}
1
Necesitará el jpcap library (tal vez el SourceForge jpcap está trabajando también) y utiliza la clase ICMPPacket para implementar la funcionalidad deseada.
Aquí está el Java traceroute implementation usando el jpcap library.
Cuestiones relacionadas
- 1. ICMP y el iPhone SDK
- 2. cómo hacer icmp ping en android
- 3. Escuchar paquetes ICMP en C#
- 4. Enchufes ICMP (linux)
- 5. pitón no privilegiado ICMP
- 6. Android ICMP ping
- 7. ¿Por qué traceroute envía paquetes UDP y no ICMP?
- 8. ¿Cómo implemento el ping ICMP en Ruby utilizando solo la biblioteca de socket estándar?
- 9. Cómo escribir composición y agregación en java
- 10. Cómo declarar y consumir eventos en Java
- 11. ¿Cuál es el proceso adecuado para la solicitud/respuesta de eco ICMP en destinos inalcanzables?
- 12. no obteniendo todos los mensajes ICMP excedidos en el tiempo: ¿por qué?
- 13. Sobrecargado y anulado en Java
- 14. Temas en Java y Python
- 15. Ejecutor y Daemon en Java
- 16. ArrayList en Java y entrada
- 17. Genéricos y clasificación en Java
- 18. ¿Cómo diseñar y diseñar una aplicación web Java/Java EE?
- 19. ¿Cómo funcionan los operadores! = Y == en enteros en Java?
- 20. ConcurrentHashMap y Hashtable en Java
- 21. getHostAddress() y getInetAddress() en Java
- 22. final y estática en Java
- 23. Diferencia entre '.' y "." en java
- 24. getPath() y espacios en Java
- 25. longitud y longitud() en Java
- 26. Pre y postcrecimiento en Java
- 27. Fecha y hora en java
- 28. push_back() y push_front() en Java
- 29. Herencia y conversión en Java
- 30. fft en matlab y java
La condición se debe cambiar a os.toLowerCase(). Contains ("win") – Hassan
donde usó el método ** convertStreamToString **? – Omore
@Omore ¿estás preguntando dónde está definido? Creo que es un método personalizado que escribí. Ya no tengo acceso al código, así que tendrás que descubrir cómo implementarlo. Si lo hace, actualice mi respuesta para incluirla; obtendrás puntos por hacer eso. –