feat(arp): 自 go-hua 迁入 ARP 表查询与定时刷新缓存
- IP→MAC 查询(AutoRefresh 后台刷新/Search/Table), 新增依赖 mostlygeek/arp - 附测试、examples/arp 例程与包 README
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# arp
|
||||
|
||||
系统 ARP 表读取与 IP→MAC 查询,内置定时自动刷新缓存。
|
||||
|
||||
> 迁移自 go-hua/arp,代码保持原样。基于 `mostlygeek/arp` 读取系统 ARP 表,
|
||||
> Windows/Unix/Linux 各有平台实现。
|
||||
|
||||
## 用法
|
||||
|
||||
```go
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.zeroonesoft.cn/golib/zogo/arp"
|
||||
)
|
||||
|
||||
// 方式一:手动刷新 + 查询
|
||||
arp.CacheUpdate()
|
||||
mac := arp.Search("192.168.1.1") // 未命中会自动再刷一次
|
||||
|
||||
// 方式二:后台定时刷新(每 30s),进程退出前 Stop
|
||||
arp.AutoRefresh(30 * time.Second)
|
||||
defer arp.StopAutoRefresh()
|
||||
|
||||
// 全表
|
||||
table := arp.Table() // map[ip]mac
|
||||
fmt.Println("上次刷新:", arp.CacheLastUpdate(), "累计次数:", arp.CacheUpdateCount())
|
||||
```
|
||||
|
||||
完整可运行例程:[examples/arp/main.go](../examples/arp/main.go)
|
||||
|
||||
## 注意
|
||||
|
||||
- 目标 IP 必须与本机同网段且有过通信,ARP 表才会有记录;查跨网段网关之外的
|
||||
地址大概率 miss。
|
||||
- `Search`/`Table` 读的是缓存;要实时数据先 `CacheUpdate` 或开启 `AutoRefresh`。
|
||||
Reference in New Issue
Block a user