2012-09-30 2 views
2

안드로이드 응용 프로그램에서 핑 응답 시간을 얻을 수있는 안드로이드 응용 프로그램을 만들고 있습니다. 나는 이미 Windows 환경에서이 작업을 수행했지만 안드로이드 장치로 가져 가면 장치가 응답을 보낼 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?안드로이드의 ping 웹 사이트에서 평균 서버 응답 시간을 얻으려면 어떻게해야합니까?

미리 감사드립니다. 여기 내 코드

    String ip="www.google.com"; String pingResult=" "; 
       String pingCmd="ping"+ip; 

       Runtime r=Runtime.getRuntime(); 
       Process p=r.exec(pingCmd); 
       BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream())); 
       String inputLine; 
       Toast.makeText(getApplicationContext(), "Going loop", 1).show(); 
       while((inputLine=in.readLine())!=null) 
       { 
        pingResult=inputLine; 
       } 
       Toast.makeText(getApplicationContext(),pingResult, 1).show(); 
       in.close(); 
입니다
+0

이 질문을보십시오, http://stackoverflow.com/questions/2786720/android-service-ping-url?rq=1 – Austin

답변

1

당신의 당신이 라인 변경하면 잘 작동합니다 :

Process p=r.exec(pingCmd); 

에 :

Process p=r.exec(new String[] {"ping", "-c 4", "www.google.pt"}); 

을하는 이유는 다음과 같습니다

-Android exec 명령 String 대신 String []이 필요합니다.

-c 매개 변수는 ping 수를 4 (Windows 동작을 복제하기 위해)로 제한하는 데 필요합니다. 그렇지 않으면 영원히 ping됩니다.

마지막으로 실제 장치에서만 작동합니다. 에뮬레이터에서 작동하게하려면 ping 재생을 에뮬레이터로 리디렉션하도록 adb를 구성해야합니다.

행운을 비네.

+0

어떻게 에뮬레이터에 ping 응답으로 리디렉션하도록 adb를 구성합니까? Luis –

+0

나는 adb 문서에 대해 간략하게 살펴 봤지만 할 수없는 것처럼 보였다. TCP 및 UDP 프로토콜에 대해서만 수행 할 수 있습니다. ping을 위해서는 ICMP 프로토콜도 필요합니다. 귀하의 정보를 위해서 tcp와 udp는 "adb -e forward"명령을 사용하여 방향을 바꿀 수 있습니다. – Luis

관련 문제