Files
4566704 a4920a6a8e feat(arp): 自 go-hua 迁入 ARP 表查询与定时刷新缓存
- IP→MAC 查询(AutoRefresh 后台刷新/Search/Table), 新增依赖 mostlygeek/arp
- 附测试、examples/arp 例程与包 README
2026-09-20 12:29:36 +08:00

38 lines
1.0 KiB
Markdown

# 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`。