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 중국어 웹사이트의 기타 관련 기사를 참조하세요!