> Java > java지도 시간 > 본문

내 Android Ping 앱이 외부 IP에 대한 Ping에 실패하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-11 08:45:02
원래의
153명이 탐색했습니다.

Why Does My Android Ping App Fail to Ping External IPs?

Java Android에서 외부 IP ping

Android용 Ping 애플리케이션을 개발할 때 외부 서버에 ping을 시도할 때 문제가 발생하는 것이 일반적입니다. 로컬 IP 핑은 작동할 수 있지만 외부 IP 주소에 액세스하면 특정 문제가 발생할 수 있습니다.

이 문제의 잠재적인 원인 중 하나는 외부 서버의 접근성과 관련될 수 있습니다. 이를 확인하려면 8.8.8.8(Google DNS) 또는 1.1.1.1(Cloudflare DNS)과 같은 다양한 외부 서버를 ping하도록 코드를 수정하는 것이 좋습니다. 이렇게 하면 문제가 대상으로 삼는 특정 외부 IP에 있는지 아니면 코드에 있는지 확인하는 데 도움이 됩니다.

외부 서버의 접근성을 확인한 후에도 문제가 지속되면 코드 구문을 면밀히 검토하세요. InetAddress.isReachable() 메서드는 ping할 IP 주소와 시간 초과 값이라는 두 가지 매개 변수를 사용합니다. ping 작업이 완료되는 데 충분한 시간을 허용하는 적절한 시간 초과 값을 설정했는지 확인하세요.

또한 애플리케이션 매니페스트에서 필요한 권한을 선언했는지 확인하세요. 애플리케이션이 네트워크에 연결할 수 있도록 허용하는 android.permission.INTERNET 권한을 명시적으로 선언해야 합니다.

이러한 측면을 모두 확인한 후에도 문제가 지속되면 다른 접근 방식을 사용하여 외부 IP 핑을 수행하는 것을 고려해 보세요. . 성공적으로 사용된 방법 중 하나는 Runtime.exec() 메서드를 통해 쉘 명령을 실행하는 것입니다. 다음은 이 접근 방식을 보여주는 예제 코드 조각입니다.

private boolean executeCommand(){
    System.out.println("executeCommand");
    Runtime runtime = Runtime.getRuntime();
    try
    {
        Process  mIpAddrProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int mExitValue = mIpAddrProcess.waitFor();
        System.out.println(" mExitValue "+mExitValue);
        if(mExitValue==0){
            return true;
        }else{
            return false;
        }
    }
    catch (InterruptedException ignore)
    {
        ignore.printStackTrace();
        System.out.println(" Exception:"+ignore);
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
        System.out.println(" Exception:"+e);
    }
    return false;
}
로그인 후 복사

이 코드 조각은 Runtime.exec() 메서드를 사용하여 외부 IP 주소에 대해 ping을 수행할 수 있는 /system/bin/ping 명령을 실행합니다. 구체적으로. -c 1 옵션은 단일 ping 요청만 보내도록 지정합니다. 이 메서드는 핑이 성공했는지(true), 실패했는지(false)를 나타내는 부울 값을 반환합니다.

위 내용은 내 Android Ping 앱이 외부 IP에 대한 Ping에 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿