java - 대체 - 자바 스윙 jsp



원격 시스템에 연결할 수 있는지 테스트하는 방법 (3)

Java를 사용하여 원격 시스템에 연결할 수 있는지 또는 Java를 사용하여 "ping 보내기"여부를 테스트하고 싶습니다. 이 기능은 부울 값이있는 메소드에 캡슐화되어야합니다 (예 :

public boolean isReachable(String ip) {
   // what to do :-)
}

필자는 Java Process 클래스를 테스트했지만 OutputBuffers를 사용한 복잡한 출력 처리 때문에이 작업을 수행하는 것이 가장 좋은 방법이라고 생각하지 않습니다.

Process proc = Runtime.getRuntime().exec("ping " + ip);

또 다른 가능성은 소켓 연결을 생성하고 던져진 예외를 처리하는 것이지만 원격 시스템이 "알몸"유닉스 시스템 인 경우 상대방에 소켓이 없을 수도 있습니다 .-) 또한, 다음을 설정할 수 있습니다. 원격 시스템에 도달 할 수없는 시간 초과.

그럼 내가 어떻게 할 수 있니? 고맙습니다!


Answer #1

나는이 질문에 대한 답변을 찾았지만 "복사 - 붙여 넣기"에 대한 코드를 추가하고 싶습니다.

public boolean isIpReachable(String ip, int timeout){
    boolean state = false;

    try {
        state = InetAddress.getByName(ip).isReachable(timeout);
    } catch (IOException e) {
        //Parse error here
    }

    return state;
}

Answer #2

리눅스를 사용하는 것처럼 보이므로 isReachable () 은 신뢰할 수 없습니다 (ICMP 패킷을 보낼 수있는 권한이 없으며 에코 서비스가 실행되는 서버가 거의 없음).

그렇다면 당신이 제안하는 방식으로 프로세스를 생성해야한다고 생각하지만 다음과 같은 명령을 사용하는 것이 좋습니다 :

   ping -c 1 hostname

한 번 시도한 후에 종료되며 프로세스의 종료 상태를 검사 할 수 있습니다. 표준 출력을 파싱하는 것보다 훨씬 안정적입니다.

Ping은 실패시 0이 아닌 성공한 경우 0을 반환합니다.


Answer #3
InetAddress.getByName(ip).isReachable(timeout);




networking