kotlin用ping命令判断网络是否是通的

ping通的报文:

ping -c 3 -W 1 127.0.0.5

PING 127.0.0.5 (127.0.0.5) 56(84) bytes of data.

64 bytes from 127.0.0.5: icmp_seq=1 ttl=64 time=0.105 ms

64 bytes from 127.0.0.5: icmp_seq=2 ttl=64 time=0.077 ms

64 bytes from 127.0.0.5: icmp_seq=3 ttl=64 time=0.069 ms

--- 127.0.0.5 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2042ms

rtt min/avg/max/mdev = 0.069/0.083/0.105/0.018 ms

不通的报文:

ping -c 3 -W 1 192.168.0.5

PING 192.168.0.5 (192.168.0.5) 56(84) bytes of data.

--- 192.168.0.5 ping statistics ---

3 packets transmitted, 0 received, 100% packet loss, time 2021ms

复制代码
private fun ping(ip:String): Boolean {

        val arr = arrayOf("sh", "-c", "ping -c 2 -W 1 $ip")//192.168.0.1

        val process = Runtime.getRuntime().exec(arr)
        val input =  BufferedReader(InputStreamReader(process.inputStream));
        var connectedCount = 0
        var line: String? = null
        input.use {
            try {
                while (input.readLine().also { line = it } != null) {
                    val result = getCheckResult(line!!)
                    connectedCount += result

                    LogHelper.d("MainActivity --- connectedCount = $connectedCount result = $result line = $line")
                    if(connectedCount > 0){
                        return true;
                    }
                }
            }catch (e:Exception){
                e.printStackTrace()
                return false
            }

        }

        return connectedCount > 0

    }


    private fun getCheckResult(line: String): Int {
        return if ((line.contains("ttl=") || line.contains("TTL=")) && line.contains("ms")) {
            1
        } else 0
    }

在此 做个笔记

相关推荐
我也要当昏君5 分钟前
4.1.8 【2022 统考真题】
运维·服务器·网络
記億揺晃着的那天9 分钟前
WebSocket 通俗讲解
网络·websocket·网络协议·实时通信
无聊的小坏坏19 分钟前
从 OneThreadOneLoop 线程池到进程池:高性能 Reactor 服务器的演进
服务器·网络·一个进程一个事件循环
二进制coder22 分钟前
服务器BMC开发视角:解析CPU管理的两大核心接口PECI与APML
运维·服务器·网络
南方的狮子先生26 分钟前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节
bemyrunningdog1 小时前
IntelliJ IDEA导出WAR包全指南
java·ide·intellij-idea
虫师c1 小时前
List vs Set:深入剖析Java两大集合的核心区别与实战应用
java·数据结构·list·set·java集合
emiya_saber1 小时前
Linux 硬盘分区管理
java·linux·网络
apple-mapping1 小时前
电脑有连接网络,但浏览器网页无法打开
网络
量子炒饭大师1 小时前
【一天一个计算机知识】—— 【编程百度】预处理指令
java·开发语言