RichardPancham/network-scanner

GitHub: RichardPancham/network-scanner

Java编写的本地网络扫描工具,用于检测连接设备和生成报告。

Stars: 0 | Forks: 0

# 网络扫描器 一个Java命令行工具,可以扫描您的本地网络并检测所有连接的设备——显示它们的IP地址、主机名和在线状态。输出干净的报告并自动保存到文本文件中。 ## 问题 当管理或排除网络故障时,您需要知道哪些设备已连接。手动进行此操作——逐个检查每个设备——既慢又低效。IT团队需要一个快速的方法来全面了解网络上的所有设备。 ## 解决方案 运行一个命令,工具就会完成剩余的工作。它会遍历您网络上所有可能的IP地址,对每个地址进行ping操作,解析主机名,并打印完整的报告。所有内容都会保存到带时间戳的文件中,以便您记录每次扫描的结果。 ## 演示 ``` Scanning network: 10.0.0.0/24 This may take a minute... .............................................................................................................................................................................................................................................................. ====== Network Scan Report ====== IP Hostname Status -------------------------------------------------- 10.0.0.1 router.home Online 10.0.0.170 DESKTOP-RICHARD Online 10.0.0.45 LAPTOP-SARAH Online 10.0.0.88 unknown Online -------------------------------------------------- Devices online: 4 Scan completed: 2026-06-01_00-36 ================================================== Report saved to: scan_2026-06-01_00-36.txt ``` ## 工作原理 ``` Start ↓ Loop through every IP in range (x.x.x.1 to x.x.x.254) ↓ Ping each IP using Java's InetAddress ↓ If online → resolve hostname ↓ Store as Device object in ArrayList ↓ Print report to terminal + save to .txt file ``` ### 使用到的关键概念 - 类和对象 —— `Device` 类存储每个找到的设备的IP、主机名和状态 - 构造函数 —— 每个Device在发现时都会用其自己的数据创建 - ArrayLists —— 动态存储扫描期间找到的所有设备 - For循环 —— 遍历所有254个可能的IP地址 - 方法 —— `isOnline()` 对每个IP进行ping操作,`getHostname()` 解析设备名称 - 异常处理 —— `try/catch` 防止设备无响应时崩溃 - 文件I/O —— 将扫描报告保存到带时间戳的`.txt`文件中 ## 开始使用 ### 要求 - Java 11或更高版本 - Windows、Mac或Linux ### 运行它 ``` # 步骤 1 — 克隆仓库 git clone https://github.com/RichardPancham/network-scanner.git cd network-scanner # 步骤 2 — 查找您的网络基础 IP # Windows:打开 PowerShell 并输入 ipconfig # 查找 IPv4 地址,例如 10.0.0.170 — 您的基础是 10.0.0 # 步骤 3 — 在 NetworkScanner.java 中更新网络基础 # 找到此行并将其更改为匹配您的网络: String networkBase = "10.0.0"; # 步骤 4 — 编译 javac NetworkScanner.java # 步骤 5 — 运行 java NetworkScanner ``` ## 输出 工具将报告打印到您的终端,并将其保存为同一文件夹中的`.txt`文件: ``` scan_2026-06-01_00-36.txt ``` 每次扫描都会创建一个新文件,并带有时间戳,这样您就可以跟踪网络随时间的变化。 ## 文件 | 文件 | 目的 | |------|---------| | `NetworkScanner.java` | 主程序 —— 扫描网络并生成报告 | | `scan_[timestamp].txt` | 自动生成的扫描报告(每次运行时创建) | ## 构建 - Java 17 - `java.net.InetAddress` —— 内置Java网络库 - `java.io.FileWriter` —— 内置Java文件写入 - 无外部依赖 ## 作者 **Richard Pancham** — [@RichardPancham](https://github.com/RichardPancham) 构建用于练习Java基础并展示实际的IT网络概念——设备发现、IP扫描和自动报告。 ## 许可证 MIT —— 免费使用和修改。
标签:Awesome, IP地址扫描, IT运维, Java工具, JS文件枚举, Socks5代理, 主机名解析, 云存储安全, 域名枚举, 情报分析, 故障排除, 文件保存, 文本报告, 流量捕获, 系统管理, 网络安全, 网络扫描, 网络拓扑, 网络设备, 网络诊断, 脚本工具, 设备检测, 隐私保护