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代理, 主机名解析, 云存储安全, 域名枚举, 情报分析, 故障排除, 文件保存, 文本报告, 流量捕获, 系统管理, 网络安全, 网络扫描, 网络拓扑, 网络设备, 网络诊断, 脚本工具, 设备检测, 隐私保护