🌐 gns - Go Network Suite

使用Go编写的网络模块,提供网络状态检测、信息获取、IP管理等功能
💡 支持IPv4/IPv6双栈 | 📊 提供详细的网络质量统计 | 🎯 智能网络评估
📋 目录
✨ 功能特性
🚀 状态检测
| 功能 |
描述 |
状态 |
| ICMP PING检测 |
支持原生ICMP和系统ping命令双模式 |
✅ |
| PING统计功能 |
提供丢包率、RTT(往返时间)详细统计 |
✅ |
| 批量PING检测 |
支持网段批量ping测试 |
✅ |
| 网络质量评估 |
基于丢包率和延迟的智能评估 |
✅ |
📡 信息获取
| 功能 |
描述 |
| 本机IP地址获取 |
支持IPv4/IPv6局域网地址 |
| 公网IP地址获取 |
支持IPv4/IPv6公网地址检测 |
| 网络接口信息获取 |
详细的网卡信息(IP、MAC、网关、DNS) |
| 网关信息获取 |
自动获取默认网关地址 |
| DNS服务器获取 |
获取网卡配置的DNS服务器列表 |
🎯 IP管理
| 功能 |
描述 |
| IPv4/IPv6地址获取 |
完整支持双栈地址管理 |
| 公网IP地址获取 |
通过多个API服务获取真实公网IP |
| 子网IP范围计算 |
基于CIDR计算可用IP范围 |
| CIDR地址解析 |
支持IPv4/IPv6的CIDR解析 |
| 网段扫描 |
自动发现本地网络网段 |
🛠️ 工具功能
| 功能 |
描述 |
| 浏览器URL打开 |
跨平台URL打开支持 |
| 网络诊断工具 |
综合网络诊断功能 |
| 权限检测 |
Windows管理员权限自动检测 |
🌐 路由追踪
| 功能 |
描述 |
状态 |
| 多协议支持 |
支持ICMP、TCP、UDP三种协议 |
✅ |
| 并发探测 |
多跳并发探测,速度快 |
✅ |
| 进度回调 |
支持实时进度回调,便于UI展示 |
✅ |
| 多种输出格式 |
支持Text、Table、JSON、CSV、Markdown |
✅ |
| 系统命令调用 |
支持调用系统traceroute/tracert命令 |
✅ |
📖 查看详细文档 → Traceroute路由追踪模块
🚀 快速开始
📦 安装
# 使用go get安装
go get -u gitee.com/liumou_site/gns
# 或者使用go mod
go mod tidy
🔧 基础用法
package main
import "gitee.com/liumou_site/gns"
// 创建统一管理实例
manager := gns.NewGNSManager(false)
// 快速Ping测试
result, _ := manager.Ping.ICMPWithStats("baidu.com", 3, false)
// 获取网络信息
ethList := manager.Eth.GetEthList()
publicIP, _ := manager.IP.GetPublicIPv4()
📖 查看完整示例代码 → 使用示例文档
API 接口
📚 完整API文档 - 包含所有结构体和方法的详细说明
快速参考
| 模块 |
主要功能 |
关键方法 |
| GNSManager |
统一管理 |
NewGNSManager() |
| Ping |
网络检测 |
ICMPWithStats() ICMP() Batch() |
| Eth |
网卡管理 |
GetEthList() GetEthInfoV4() GetDNSServers() |
| IP |
地址管理 |
GetPublicIPv4() CIDRToIPRange() GetDefaultNetworkSubnet() |
| Tools |
工具功能 |
OpenUrl() |
| Traceroute |
路由追踪 |
QuickTraceroute() Traceroute() BatchTraceroute() |
核心数据结构
// Ping统计结果
type PingResult struct {
Target string // 目标主机
PacketsSent int // 发送包数
LossRate float64 // 丢包率(%)
AvgRTT time.Duration // 平均延迟
Quality string // 网络质量评级
}
📖 查看完整API文档 → API接口文档
快速示例
使用 GNSManager 的综合示例
package main
import (
"fmt"
"log"
"github.com/lingchuan/gns"
)
func main() {
gns := gns.NewGNSManager(false)
// 网络质量检测
result, _ := gns.Ping.ICMPWithStats("8.8.8.8", 5, false)
fmt.Printf("目标: %s, 丢包率: %.1f%%, 质量: %s\n",
result.Target, result.LossRate, result.Quality)
// 获取公网IP
ipv4, _ := gns.IP.GetPublicIPv4()
fmt.Printf("公网IPv4: %s\n", ipv4)
}
详细示例文档
📖 完整示例代码 → 使用示例文档
示例文档内容分类
- 🚀 快速开始 - 基础使用示例
- 🎯 Ping功能 - 网络检测和批量测试
- 🌐 网络接口 - 网卡管理和DNS配置
- 🗺️ IP管理 - 公网IP获取和子网计算
- 🛠️ 工具功能 - 实用工具集成
- 🔧 高级用法 - 网络监控和诊断
- 🌐 路由追踪 - Traceroute路由追踪功能
快速导航
API接口文档
📚 完整API文档 → API接口文档
文档内容
- 🏗️ GNSManager - 统一管理结构体
- 🎯 Ping模块 - 网络检测功能
- 🌐 Eth模块 - 网络接口管理
- 🗺️ IP模块 - IP地址管理
- 🛠️ Tools模块 - 工具功能
- 🌐 Traceroute模块 - 路由追踪功能
- 📊 数据结构 - 核心结构体定义
版本信息
当前版本: v1.8.3
查看版本:
import "gitee.com/liumou_site/gns"
func main() {
gns.Version() // 输出: v1.8.3
}
测试和示例
运行测试
# 运行所有测试
go test ./...
# 运行Ping功能测试
go test ./test/ping/ -v
# 运行网络接口测试
go test ./eth/... -v
# 运行IP功能测试
go test ./ip/... -v
# 运行路由追踪测试
go test ./traceroute/... -v
注意事项
- 管理员权限: Windows系统下ICMP功能需要管理员权限,程序会自动检测并切换到系统ping命令
- 防火墙: 确保防火墙允许ICMP流量
- UAC: 建议以管理员身份运行以获得最佳ICMP性能
IPv6支持
- 自动检测系统IPv6支持情况
- 支持链路本地地址、站点本地地址和全球单播地址
- 自动过滤无效和回环地址
网络环境要求
- 需要稳定的网络连接进行公网IP检测
- 某些企业网络可能会限制ICMP流量
- 移动网络可能会影响延迟测试结果
依赖信息
module gitee.com/liumou_site/gns
go 1.22.0
require (
gitee.com/liumou_site/gbm v1.1.7
gitee.com/liumou_site/gcs v1.8.3
gitee.com/liumou_site/logger v1.2.1
github.com/spf13/cast v1.7.1
golang.org/x/net v0.35.0
)
问题反馈
开源协议
本项目基于 MIT License 开源协议发布。