Как программно пинговать сайт в Android - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь создать приложение, которое может получить пинг веб-сайтов или IP-адрес и показать только номер пинга в текстовом представлении, я использую этот код для получения пинга:

public void fExecutarPing(View view){
        Editable host = edtIP.getText();


    try {
        String cmdPing = "ping -c 1 -w 1 "+host;
        Runtime r = Runtime.getRuntime();
        Process p = r.exec(cmdPing);
        BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
        String inputLinhe;


        while((inputLinhe = in.readLine())!= null){

            Toast.makeText(this, inputLinhe, Toast.LENGTH_SHORT).show();

        }


    } catch (Exception e) {
        Toast.makeText(this, "Error: "+e.getMessage().toString(), Toast.LENGTH_SHORT).show();

    }

этот код просто дает мне несколькоТост сообщение, как при пинге в Windows Command, но как я могу просто получить номер пинга, например: 85

1 Ответ

0 голосов
/ 29 сентября 2018

Я рекомендую использовать эту библиотеку https://github.com/potterhsu/Pinger

Установка 1. В корневом build.gradle:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
В целевом модуле build.gradle dependencies { compile 'com.github.potterhsu:Pinger:v1.1' }

Использование 1. Пинг напрямую в синхронизации:

Pinger pinger = new Pinger();
pinger.ping("8.8.8.8", 3);

2.Пинг в асинхронизации, пока она не будет выполнена:

Pinger pinger = new Pinger();
pinger.setOnPingListener(new Pinger.OnPingListener() {
    @Override
    public void onPingSuccess() { ... }

    @Override
    public void onPingFailure() { ... }

    @Override
    public void onPingFinish() { ... }
});
pinger.pingUntilSucceeded("8.8.8.8", 5000);

3.Пинг в асинхронизации до сбоя:

Pinger pinger = new Pinger();
pinger.setOnPingListener(new Pinger.OnPingListener() {
    @Override
    public void onPingSuccess() { ... }

    @Override
    public void onPingFailure() { ... }

    @Override
    public void onPingFinish() { ... }
});
pinger.pingUntilFailed("8.8.8.8", 5000);
...