Java에서 IP 주소를 핑할 때 연결할 수 없는 호스트 오류 문제 해결
주어진 코드 조각은 IP 주소를 핑하는 것을 목표로 하지만 프로그램에서 문제가 발생합니다. localhost가 아닌 다른 호스트에 ping을 시도할 때. 방화벽을 비활성화하면 아마도 네트워크 제한이 제거되지만 코드는 원격 호스트를 효과적으로 ping하지 못합니다.
이 문제의 근본 원인은 InetAddress.isReachable() 메서드가 다양한 메커니즘을 사용하여 호스트 연결 가능성을 기반으로 결정한다는 사실에 있습니다. Java 문서에 명시된 대로 권한 가용성에 대해:
"권한을 얻을 수 있으면 일반적인 구현에서는 ICMP ECHO REQUEST를 사용하고, 그렇지 않으면 포트 7(Echo)에서 TCP 연결을 설정하려고 시도합니다. "
대부분의 경우 ICMP ECHO REQUEST는 호스트 연결 가능성을 확인하는 데 사용됩니다. 그러나 ICMP를 사용하려면 많은 운영 체제에서 관리(루트) 권한이 필요합니다. 이러한 권한이 없으면 이 방법은 포트 7에서 TCP 연결을 설정하는 방법으로 대체됩니다.
이 문제를 해결하려면 프로그램에 ICMP ECHO REQUEST를 수행할 수 있는 충분한 권한이 있는지 확인하세요. 이것이 가능하지 않은 경우 ICMP에 의존하지 않는 호스트 도달 가능성 테스트를 위한 대체 방법을 사용하는 것을 고려해 보십시오.
위 내용은 Java에서 원격 호스트를 Ping할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!