# netreach **Repository Path**: windpanda/netreach ## Basic Information - **Project Name**: netreach - **Description**: 检测网络是否能通的工具. 主要是为了方便判断是否联通网络, 很多时候, 设备的WIFI和4G都是连接的,但是未必真正能连接Internet. 本工具可以采用PING, ICMP, SOCKET方式进行网络探测. 目前测试在 MAC, WIN, LINUX(ANDROID) 系统内都可以使用. 可以多地址,多方式并发探测. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-11-29 - **Last Updated**: 2024-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NetReach网络探测小工具 [![中文编程](https://gitee.com/Program-in-Chinese/overview/raw/master/%E4%B8%AD%E6%96%87%E7%BC%96%E7%A8%8B.svg)](https://gitee.com/Program-in-Chinese/overview) ## 功能简介 主要是为了方便判断是否联通网络, 很多时候, 设备的WIFI和4G都是连接的,但是未必真正能连接Internet. 本工具可以采用PING, ICMP, SOCKET方式进行网络探测. 目前测试在 MAC, WIN, LINUX(ANDROID) 系统内都可以使用. 可以多地址,多方式并发探测. ## 非常简单 添加依赖 ```groovy //gradle allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.gitee.px96004:netreach:+' } ``` 示例代码 ```kotlin val netReach = NetReach() //可选: 指定地址, 默认"amap.com", "baidu.com" netReach.addresses = listOf("amap1.com1", "http://amap.com", "svn://baidu.com", "163.com") //可选: 指定方式, 默认三种方式都包含 netReach.methods = listOf(Method.PING) //可选: 轮训间距,单位毫秒 netReach.delays = 10_000L //可选: scope, 安卓上可以方便进行生命周期绑定, 其他平台可以忽略 netReach.scope = GlobalScope //可选: 设置超时时间, 单位毫秒,超时会返回网络不通 netReach.timeout = 5_000 netReach.addListener(object : ReachListener { override fun netReachableChange(isReachable: Boolean, details: List?) { //异步返回代码是否通畅,一般不在主线程 //isReachable 网络是否能通 //details 详细信息, 包括网络时延等 } }) //开始探测 netReach.start() //只想进行一次探测 netReach.once() ``` ## 特别提示 ICMP方式, 在MAC和LINUX系统内, 需要ROOT权限, 并不推荐使用