IPtools 网络工具箱:Android 开源网络诊断工具,集成 Ping/端口扫描/路由追踪等 13 项功能


IPtools 网络工具箱:Android 开源网络诊断工具,集成 Ping/端口扫描/路由追踪等 13 项功能

在日常开发和运维工作中,网络诊断工具几乎是每个人的必备品。但手机上能用的网络工具类 App 往往功能单一——有的只能 Ping,有的只能查 IP,很难找到一个能覆盖大部分网络诊断场景的集成工具。

IPtools(网络工具箱) 正是为解决这个痛点而生的开源 Android 应用。

项目地址:https://github.com/xin-521/IPtools

IPtools 应用截图

一、项目概览

IPtools 是一个纯 Kotlin 开发的 Android 网络工具集合应用,代码包名为 org.zeroxin.iptools,应用名称为"网络工具箱"。它把开发者/运维人员日常使用频率最高的网络诊断功能整合到一个 App 中,覆盖从基础连通性测试到高级端口扫描的完整链路。

当前版本 v1.1,目标 SDK 34(Android 14),最低支持 Android 7.0(API 24)。

为什么值得关注?

如果你是 Android 开发者,这个项目的代码质量、架构选型和技术栈都是一份很好的 MVVM + Hilt + Room + DataStore 参考实现。如果你只是用户,它可以替代手机上多个单一功能的网络工具。

二、完整功能清单

IPtools 内置了 13 项网络工具,分为基础工具和高级工具两大类。

基础网络工具(日常诊断)

工具功能说明
我的 IP查看本机公网 IP、归属地、ISP、ASN、经纬度,支持在地图上定位
局域网信息显示当前 WiFi 连接详情:SSID、BSSID、信号强度、频率、网关、子网掩码、DNS 服务器、DHCP 信息
Ping 工具测试网络连通性与延迟,支持自定义包数量、超时时间和包大小,提供连续 Ping 模式
路由追踪Traceroute,显示每一跳的 IP 和 RTT(三次探测),支持最大 30 跳

高级网络工具(深度诊断)

工具功能说明
端口扫描TCP Connect 扫描,三种模式:快速扫描(23 个常用端口)、自定义端口范围、全端口扫描(1-65535,100 端口并行分批)
局域网扫描扫描局域网内 1-254 所有设备,检测 IP、MAC 地址、主机名、厂商信息(支持 Apple、小米、华为、Raspberry Pi、Espressif 等主流 OUI 识别)
DNS 查询支持 A/AAAA/MX/NS/TXT/CNAME 多种记录类型查询
DNS 基准测试对比测试多个 DNS 服务器的解析速度
Whois 查询查询域名注册信息:注册商、创建/到期日期、域名服务器等
SSH 工具内置 SSH 客户端(基于 JSch 库),可直接连接远程服务器
网络测速测试网络下载和上传速度
子网计算器输入 IP/掩码,自动计算网络地址、广播地址、可用主机范围
MAC OUI 查询根据 MAC 地址前缀查询设备厂商
Wake-on-LAN远程唤醒局域网设备

辅助功能

  • IP 地图:在 Leaflet WebView 地图上可视化显示 IP 位置
  • 设置面板:自定义 Ping 参数、扫描并发数、测速 URL、主题模式(亮色/暗色)
  • 历史记录和收藏:使用 Room 数据库保存查询历史和收藏,方便重复使用

三、技术栈与架构分析

从 Android 开发角度看,IPtools 的技术选型是现代 Android 开发的典型范本。

整体架构:MVVM

1
View (Fragment) → ViewModel → Repository → DataSource (Room/OkHttp/DataStore)
  • View 层:基于 Android View System(XML 布局 + ViewBinding),使用 BottomNavigationView 构建底部导航
  • 导航:Navigation Component + nav_graph.xml 集中管理 Fragment 路由
  • ViewModel:每个工具对应一个 ViewModel,持有协程作用域,通过 LiveData 向 UI 层暴露状态
  • Data 层:Room 数据库(query_history + favorites 两张表)、Jetpack DataStore(用户设置持久化)、OkHttp/Retrofit(网络 API)

关键技术组件

类别选型用途
语言Kotlin100% Kotlin,无 Java 混编
DIHilt(Dagger + KSP)3 个 Module:AppModule、NetworkModule、ToolModule
网络OkHttp + Retrofit + Gson调用 IP API、JSON 解析
数据库Room + KSP查询历史和收藏持久化
存储Jetpack DataStore Preferences设置项持久化
异步Kotlin Coroutines所有网络请求和工具执行均在 IO 调度器
SSHJSch (0.2.16)SSH 客户端连接
地图Leaflet.js(WebView)IP 位置可视化

值得关注的代码细节

  1. 依赖注入设计的 ToolModule:所有工具类(PingTool、PortScanner、TracerouteTool 等)均注册为 @Singleton,由 Hilt 统一管理生命周期。

  2. PortScanner 的分批并行扫描:全端口扫描时按 100 端口一批分组,每组内通过 async/awaitAll 并发扫描,兼顾速度与资源控制。

  3. PingTool 的双层策略:优先使用 Java InetAddress.isReachable() 实现跨平台兼容,同时保留 pingWithSystem() 回退到系统原生 ping -c 命令获取更准确的 ICMP 结果。

  4. LanScanner 的 OUI 识别:内置了 Apple、小米、华为、三星、Raspberry Pi、Espressif(乐鑫)、TP-Link 等主流厂商的 MAC OUI 数据库,无需联网即可识别设备厂商。

  5. IP 后端 API:使用 https://my.ippure.com/v1/info 作为 IP 查询接口(非 ip-api.com),说明开发者拥有独立的后端能力。

项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
app/src/main/
├── java/org/zeroxin/iptools/
│ ├── data/ # Room 数据库(DAO、Entity)
│ ├── di/ # Hilt 依赖注入模块
│ ├── model/ # 数据模型(IpInfo, PingResult, PortScanResult 等)
│ ├── network/ # 网络 API 服务(IpApiService)
│ ├── ui/
│ │ └── fragment/ # 所有 Fragment 界面
│ ├── util/ # 工具类(PingTool, PortScanner 等 14 个)
│ ├── viewmodel/ # 各页面的 ViewModel
│ ├── IpToolsApplication.kt
│ └── MainActivity.kt
├── res/
│ ├── layout/ # XML 布局文件
│ ├── drawable/ # 图标资源
│ ├── values/ # 字符串、颜色、主题
│ └── navigation/ # Navigation 导航图
└── AndroidManifest.xml

四、安装与构建

直接安装

这是 Android 原生应用,需要下载 APK 文件安装到 Android 设备上。请在项目的 GitHub Releases 页面 查看是否有已构建的 APK。

自行构建

如果你有 Android 开发环境,可以自行编译:

环境要求:

  • Android Studio Arctic Fox 或更高版本
  • JDK 11+
  • Android SDK 34

构建步骤:

1
2
3
4
5
git clone https://github.com/xin-521/IPtools.git
# 使用 Android Studio 打开项目
# 同步 Gradle 依赖
# 点击 Run 或运行:
./gradlew assembleDebug

构建产物为 app/build/outputs/apk/ 目录下的 NetworkTools-1.1-debug.apk。

所需权限

App 仅申请网络相关的最基本权限:

  • INTERNET — 网络访问
  • ACCESS_NETWORK_STATE — 查看网络状态
  • ACCESS_WIFI_STATE — 查看 WiFi 信息
  • CHANGE_WIFI_STATE — 修改 WiFi 状态(WOL 功能需要)
  • CHANGE_NETWORK_STATE — 修改网络状态

未申请任何敏感权限(如位置、相机、存储),隐私保护做得比较干净。

五、适用场景

IPtools 的核心用户群体很明确——开发者、运维人员、网工和 IT 爱好者

典型使用场景包括:

  • 日常网络排查:检查本机 IP、Ping 目标、路由追踪定位丢包节点
  • 内网运维:局域网扫描发现设备、端口扫描检查服务暴露情况、SSH 直连服务器
  • 域名管理:DNS 查询验证解析记录、Whois 查询域名注册信息、DNS 基准测试选最快的 DNS
  • 网络规划:子网计算器快速计算 CIDR 范围、广播地址
  • 远程管理:Wake-on-LAN 开机、SSH 远程维护

六、总结

IPtools 的价值在于"集成"二字。当手机上一个 App 就能完成 Ping、端口扫描、路由追踪、Whois、SSH 等一系列操作时,工作效率的提升是很明显的。从工程角度看,它的代码质量在线——MVVM 架构清晰,Hilt + Room + DataStore 的选型符合当前 Android 开发主流标准,工具类的设计和并发控制也有值得参考的地方。

如果你需要一款全功能的网络诊断 App,或者正在学习 Android 开发中的 MVVM + Hilt 实践,这个项目都值得看一看。


文章作者: ZeroXin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZeroXin !
评论
  目录