43 lines
1004 B
Go
43 lines
1004 B
Go
// 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("名称", "目标", 端口, 超时毫秒)
|
|
}
|