ping

作者: 多一点童真 | 来源:发表于2020-06-10 16:23 被阅读0次

package com.gd.windtrend.frontpos.service;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import com.gd.windtrend.frontpos.bean.PingEvent;

import org.greenrobot.eventbus.EventBus;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Timer;

import java.util.TimerTask;

public class PingService extends Service {

            private Timer mTimer;

            private TimerTask mTimerTask;

            @Override

            public void onCreate() {

                super.onCreate();

            }

            @Override

            public IBinder onBind(Intent intent) {

                return null;

            }

            @Override

            public int onStartCommand(Intent intent, int flags, int startId) {

                final String ip = intent.getStringExtra("IP");

                mTimerTask = new TimerTask() {

            @Override

            public void run() {

                ping(ip);

            }

        };

        mTimer = new Timer();

        mTimer.schedule(mTimerTask,100,1000);

        return super.onStartCommand(intent, flags, startId);

    }

    private void ping(String ip){

        int index = 0;

        try {

            String delay = "";

            Process p = null;

            p = Runtime.getRuntime().exec("/system/bin/ping -c 4 "+ ip);//ping 4次

            BufferedReader buf =new BufferedReader(new InputStreamReader(p.getInputStream()));

            String str = null;

            while((str = buf.readLine())!= null){

                ++index;

                if(str.contains("avg")){

                    int i = str.indexOf("/",20);

                    int j = str.indexOf(".", i);

                    delay = str.substring(i+1, j);

                    EventBus.getDefault().post(new PingEvent(delay,true));

                }

            }

        }catch (Exception e){

        }

        //ping 4 次正常可以 readLine 8条数据

        if (index < 8){

            EventBus.getDefault().post(new PingEvent("",false));

        }

    }

    @Override

    public void onDestroy() {

        super.onDestroy();

        if (mTimer != null && mTimerTask != null){

            mTimerTask.cancel();

            mTimer.cancel();

        }

    }

}

相关文章

网友评论

      本文标题:ping

      本文链接:https://www.haomeiwen.com/subject/aheptktx.html