簡體   English   中英

我如何以編程方式在 Android 中 ping 一個網站

[英]How do I programmatically ping a website in Android

我試圖制作一個可以獲取網站或 IP 地址的 ping 並在文本視圖中僅顯示 ping 號碼的應用程序,我使用此代碼獲取 ping:

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();

    }

這段代碼只是給我多個 toast 消息,就像你在 windows 命令中 ping 一樣,但我怎么能得到 ping 號碼,例如:85

我推薦使用這個庫https://github.com/potterhsu/Pinger

設置1. 在 root build.gradle 中:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
  1. 在目標模塊 build.gradle dependencies { compile 'com.github.potterhsu:Pinger:v1.1' }

用法 1. 同步直接Ping:

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

2. 異步Ping直到成功:

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. 異步Ping直到失敗:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM