feat(nettest): 自 go-hua 迁入网络连通性探测
- TCP 端口探测 + 原始 ICMP Ping, 持续统计成功率与延迟 - 附测试、examples/nettest 例程与包 README
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// nettest 包示例:网络连通性测试(port>0 走 TCP 端口探测,port=0 走 ICMP,需管理员权限)
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"git.zeroonesoft.cn/golib/zogo/nettest"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 起一个本地 TCP 服务作为测试目标
|
||||
l, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
go func() {
|
||||
for {
|
||||
c, err := l.Accept()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
c.Close()
|
||||
}
|
||||
}()
|
||||
port := l.Addr().(*net.TCPAddr).Port
|
||||
|
||||
// 每 1 秒探测一次,IsEcho=true 时控制台输出每次结果
|
||||
t := nettest.NewNetTest(1, "本机端口", "127.0.0.1", port, 1000, true)
|
||||
t.Start()
|
||||
|
||||
time.Sleep(3 * time.Second)
|
||||
t.Stop()
|
||||
|
||||
r := t.GetResult(false)
|
||||
fmt.Printf("探测目标: %s:%d\n", t.Addr, port)
|
||||
fmt.Printf("总计: %d 成功: %d 失败: %d 平均: %dms 最小: %dms 最大: %dms\n",
|
||||
r.TotalCount, r.SuccessCount, r.FailCount, r.Avg, r.Min, r.Max)
|
||||
|
||||
// 运行中可动态更换目标: t.Set("名称", "目标", 端口, 超时毫秒)
|
||||
}
|
||||
Reference in New Issue
Block a user