Java에는 ICMP 및 traceroute의 프리미티브가 없습니다. 이것을 극복하는 방법? 기본적으로 필자는 * nix 및 Windows에서 실행되어야하는 코드를 작성 중이며 두 플랫폼 모두에서 실행될 코드 조각이 필요합니다.Java의 ICMP 및 traceroutes 방법
6
A
답변
4
다음은 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;
}
1
당신이해야하는 jpcap library (아마 SourceForge jpcap 너무 노력)하고 원하는 기능을 구현하기 위해 ICMPPacket 클래스를 사용합니다.
여기에 jpcap library을 사용하는 Java traceroute implementation입니다.
관련 문제
- 1. ICMP 및 iPhone SDK
- 2. android에서 icmp ping하는 방법
- 3. C# 및 Java의 암호화 방법
- 4. Java의 FileReader 및 준비된 방법
- 5. ICMP 소켓에서 데이터 수신
- 6. asyn icmp ping의 문제점
- 7. ICMP Host-Unreachable
- 8. ICMP 스푸핑에 대한 도움
- 9. C#에서 ICMP 패킷 수신
- 10. ICMP 사용 안 함/차단됨 : C#
- 11. Java의 PushbackReader 및 EOF
- 12. FileWriter 및 Java의 InputStream
- 13. SPNEGO 및 Java의 위임
- 14. Android 및 Java의 단편
- 15. Android 및 Java의 TimeZone.getAvailableIDs
- 16. Java의 스레딩 및 동기화
- 17. Java의 Hashtable에서 반복 및 삭제
- 18. Java의 JAR 및 패키지 이해
- 19. PHP 및 Java의 프로듀서 소비자
- 20. C# C++ 및 Java의 루프
- 21. Java의 예외
- 22. 보내는 ICMP 패킷에 TTL을 설정 하시겠습니까?
- 23. C#의 ICMP, SocketException - 액세스 권한으로 금지됨
- 24. UDP 패킷을 보내고 C의 라우터에서 ICMP 응답을받습니다.
- 25. swf에서 ICMP 에코 요청을 보낼 수 있습니까?
- 26. Java의 단축키
- 27. Java의 JOptionPane
- 28. Java의 FileOutputStream에서 파일 만들기 및 쓰기
- 29. Java의 InputStream
- 30. Java의 비동기 작업 패턴
조건을 os.toLowerCase()로 변경해야합니다. contains ("win") – Hassan
여기서 ** convertStreamToString ** 메소드를 사용하셨습니까? – Omore
@Omore 당신이 어디에 정의되어 있는지 묻고 있습니까? 나는 그것이 내가 작성한 맞춤 방법이라고 생각한다. 코드에 더 이상 액세스 할 수 없으므로 구현 방법을 알아 내야합니다. 그럴 경우 포함 시키려면 내 대답을 업데이트하십시오. 당신은 그것을하기위한 포인트를 얻을 것이다. –