一款基于Golang的高性能TCP Ping工具,支持IPv4、IPv6和域名解析,提供丰富的自定义选项和详细的连接信息展示。
TCPing 是一个轻量级、高效的 TCP 连接测试工具,具备以下特性:
- 支持 IPv4 和 IPv6 地址解析
- 支持标准IPv4点分十进制格式(如
8.8.8.8
) - 智能域名解析,自动选择最优协议
- 自定义目标端口(1-65535)
- 可配置请求次数和发送间隔
- 可调节连接超时时间
- 支持无限次连续测试
- 彩色输出模式,直观显示结果状态
- 详细模式显示完整连接信息
- 实时统计信息(最小/最大/平均延迟)
- 网络抖动(Jitter)计算,提供网络稳定性分析
- 完善的错误处理和提示信息
- 跨平台支持(Linux、Windows、macOS)
- 多架构支持(amd64、arm64、386、arm、loong64)
- 一键安装脚本,支持自动更新
- 无依赖运行,开箱即用
访问 GitHub Releases 页面,选择适合您系统的版本:
操作系统 | 支持架构 | 下载文件示例 |
---|---|---|
Linux | amd64, 386, arm64, arm, loong64 | tcping-linux-amd64.zip |
Windows | amd64, 386, arm64, arm | tcping-windows-amd64.zip |
macOS | amd64, arm64 | tcping-darwin-amd64.zip |
- 下载对应版本:根据您的系统选择合适的压缩包
- 解压文件:解压后得到
tcping
可执行文件 - 配置环境:将文件移动到系统PATH目录
- Linux/macOS:
/usr/local/bin/tcping
- Windows:
C:\Windows\System32\tcping.exe
或添加到PATH环境变量
tcping --version
TCPing 版本 v1.7.3
Copyright (c) 2025. All rights reserved.
一键安装脚本(推荐)
bash <(curl -Ls https://raw.githubusercontent.com/nodeseeker/tcping/main/install.sh) --force
bash <(curl -Ls https://gh-proxy.com/raw.githubusercontent.com/nodeseeker/tcping/main/install_cn.sh) --force
注意: 脚本会自动安装到
/usr/local/bin
目录,需要root权限
选项 | 长选项 | 说明 |
---|---|---|
-u |
--uninstall |
卸载 tcping |
-f |
--force |
强制安装(跳过确认) |
-v |
--verbose |
详细输出安装过程 |
-h |
--help |
显示帮助信息 |
- 智能检测:自动检测系统架构和已安装版本
- 版本管理:支持安装、更新、卸载操作
- 依赖处理:自动检测并安装必要依赖(curl、unzip等)
- 多源下载:国内版本支持多个镜像源,提高下载成功率
- 错误处理:完善的错误处理和用户提示
tcping [选项] <主机> [端口]
短选项 | 长选项 | 描述 | 默认值 |
---|---|---|---|
-4 |
--ipv4 |
强制使用 IPv4 | 自动检测 |
-6 |
--ipv6 |
强制使用 IPv6 | 自动检测 |
-n |
--count |
发送请求的次数 | 无限 |
-p |
--port |
指定要连接的端口 | 80 |
-t |
--interval |
请求之间的间隔(毫秒) | 1000ms |
-w |
--timeout |
连接超时时间(毫秒) | 1000ms |
-c |
--color |
启用彩色输出 | 关闭 |
-v |
--verbose |
启用详细模式(包含抖动统计) | 关闭 |
-V |
--version |
显示版本信息 | - |
-h |
--help |
显示帮助信息 | - |
$ tcping google.com
正在对 google.com (IPv4 - 142.250.191.14) 端口 80 执行 TCP Ping
从 142.250.191.14:80 收到响应: seq=0 time=31.45ms
从 142.250.191.14:80 收到响应: seq=1 time=29.78ms
从 142.250.191.14:80 收到响应: seq=2 time=30.12ms
^C
操作被中断。
--- 目标主机 TCP ping 统计 ---
已发送 = 3, 已接收 = 3, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 29.78ms, 最大 = 31.45ms, 平均 = 30.45ms
$ tcping google.com 443
# 或使用 -p 参数
$ tcping -p 443 google.com
$ tcping -n 5 -t 2000 example.com 443
正在对 example.com (IPv4 - 93.184.216.34) 端口 443 执行 TCP Ping
从 93.184.216.34:443 收到响应: seq=0 time=142.93ms
从 93.184.216.34:443 收到响应: seq=1 time=138.45ms
从 93.184.216.34:443 收到响应: seq=2 time=140.12ms
从 93.184.216.34:443 收到响应: seq=3 time=137.68ms
从 93.184.216.34:443 收到响应: seq=4 time=139.74ms
--- 目标主机 TCP ping 统计 ---
已发送 = 5, 已接收 = 5, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 137.68ms, 最大 = 142.93ms, 平均 = 139.78ms
$ tcping -6 ipv6.google.com 443
正在对 ipv6.google.com (IPv6 - 2404:6800:4003:c04::8b) 端口 443 执行 TCP Ping
从 2404:6800:4003:c04::8b:443 收到响应: seq=0 time=36.24ms
从 2404:6800:4003:c04::8b:443 收到响应: seq=1 time=35.87ms
^C
操作被中断。
--- 目标主机 TCP ping 统计 ---
已发送 = 2, 已接收 = 2, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 35.87ms, 最大 = 36.24ms, 平均 = 36.06ms
$ tcping -c -v github.com 443
正在对 github.com (IPv4 - 20.205.243.166) 端口 443 执行 TCP Ping
域名 github.com 解析到的所有IP地址:
[1] IPv4: 20.205.243.166
[2] IPv4: 20.27.177.113
使用IP地址: 20.205.243.166
从 20.205.243.166:443 收到响应: seq=0 time=138.45ms
详细信息: 本地地址=192.168.1.100:50123, 远程地址=20.205.243.166:443
从 20.205.243.166:443 收到响应: seq=1 time=140.12ms
详细信息: 本地地址=192.168.1.100:50124, 远程地址=20.205.243.166:443
从 20.205.243.166:443 收到响应: seq=2 time=136.78ms
详细信息: 本地地址=192.168.1.100:50125, 远程地址=20.205.243.166:443
^C
操作被中断。
--- 目标主机 TCP ping 统计 ---
已发送 = 3, 已接收 = 3, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 136.78ms, 最大 = 140.12ms, 平均 = 138.45ms
抖动(Jitter): 平均 = 1.67ms
$ tcping -v -n 10 -c unstable-server.com 80
正在对 unstable-server.com (IPv4 - 203.0.113.10) 端口 80 执行 TCP Ping
从 203.0.113.10:80 收到响应: seq=0 time=45.23ms
从 203.0.113.10:80 收到响应: seq=1 time=52.67ms
从 203.0.113.10:80 收到响应: seq=2 time=38.91ms
从 203.0.113.10:80 收到响应: seq=3 time=61.34ms
从 203.0.113.10:80 收到响应: seq=4 time=44.78ms
从 203.0.113.10:80 收到响应: seq=5 time=55.12ms
从 203.0.113.10:80 收到响应: seq=6 time=41.56ms
从 203.0.113.10:80 收到响应: seq=7 time=49.89ms
从 203.0.113.10:80 收到响应: seq=8 time=58.23ms
从 203.0.113.10:80 收到响应: seq=9 time=46.45ms
--- 目标主机 TCP ping 统计 ---
已发送 = 10, 已接收 = 10, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 38.91ms, 最大 = 61.34ms, 平均 = 49.42ms
抖动(Jitter): 平均 = 8.45ms
$ tcping 8.8.8.8 443
正在对 8.8.8.8 (IPv4 - 8.8.8.8) 端口 443 执行 TCP Ping
...
$ tcping 2001:4860:4860::8888 443
正在对 2001:4860:4860::8888 (IPv6 - 2001:4860:4860::8888) 端口 443 执行 TCP Ping
...
$ tcping -w 100 slow-server.example.com 80
正在对 slow-server.example.com (IPv4 - 203.0.113.1) 端口 80 执行 TCP Ping
TCP连接失败 203.0.113.1:80: seq=0 错误=连接超时
TCP连接失败 203.0.113.1:80: seq=1 错误=连接超时
^C
操作被中断。
--- 目标主机 TCP ping 统计 ---
已发送 = 2, 已接收 = 0, 丢失 = 2 (100.0% 丢失)
使用场景 | 命令示例 | 说明 |
---|---|---|
基本连通性测试 | tcping google.com |
测试HTTP连通性 |
HTTPS服务测试 | tcping -p 443 example.com |
测试HTTPS服务 |
SSH服务测试 | tcping -p 22 server.com |
测试SSH连接 |
数据库连接测试 | tcping -p 3306 db.server.com |
测试MySQL连接 |
快速诊断 | tcping -n 3 -w 500 host.com 80 |
3次快速测试 |
持续监控 | tcping -t 5000 -c service.com 443 |
每5秒测试一次 |
网络质量分析 | tcping -v -n 20 target.com 443 |
详细统计含抖动分析 |
多IP域名测试 | tcping -v cdn.example.com 80 |
查看域名所有IP并测试首个IP |
TCPing 提供了强大而灵活的地址解析功能:
格式类型 | 示例 | 说明 |
---|---|---|
标准点分十进制 | 8.8.8.8 |
传统IPv4格式 |
- 支持标准 IPv6 地址格式(如
2404:6800:4003:c04::8b
) - 自动添加方括号用于端口分隔
- 智能DNS解析,支持A和AAAA记录
- 根据
-4
或-6
参数强制协议类型 - 自动选择最优可用地址
- 详细模式下显示所有解析到的IP地址
- 直接IP解析:解析标准IP地址格式
- DNS查询:进行域名解析,优先选择IPv4地址
TCPing 提供全面的网络连接统计:
- 发送/接收统计:准确记录请求发送和响应接收数量
- 丢包率计算:实时计算连接失败率
- 延迟统计:最小、最大、平均往返时间(RTT)
在详细模式(-v
)下,TCPing 会计算网络抖动:
网络抖动是指连续两次测量之间延迟时间的变化,是衡量网络稳定性的重要指标:
- 低抖动:网络连接稳定,延迟变化小
- 高抖动:网络不稳定,可能影响实时应用
抖动 = |当前RTT - 上一次RTT|
平均抖动 = 所有抖动值的平均数
抖动范围 | 网络质量 | 适用场景 |
---|---|---|
< 5ms | 优秀 | 实时游戏、视频通话 |
5-20ms | 良好 | 一般网络应用 |
20-50ms | 一般 | 文件传输、网页浏览 |
> 50ms | 较差 | 可能影响用户体验 |
$ tcping -v -n 10 example.com 443
...
--- 目标主机 TCP ping 统计 ---
已发送 = 10, 已接收 = 10, 丢失 = 0 (0.0% 丢失)
往返时间(RTT): 最小 = 45.23ms, 最大 = 52.67ms, 平均 = 48.45ms
抖动(Jitter): 平均 = 2.34ms
TCPing 提供了全面的错误处理机制:
- ✅ 端口范围验证(1-65535)
- ✅ 协议冲突检测(-4与-6同时使用)
- ✅ 数值参数合法性检查
- 🔍 地址解析失败:详细的DNS错误信息
- ⏱️ 连接超时:明确的超时提示
- 🚫 连接被拒绝:端口关闭或服务不可用
- 📡 网络不可达:路由或网络配置问题
- 彩色错误输出(启用
-c
选项时) - 详细的错误描述和可能的解决建议
- 完整的统计信息,包括失败次数和丢包率
- 详细模式下提供网络抖动分析,帮助诊断网络稳定性
- 智能域名解析显示,展示所有可用IP地址
Q: 为什么使用TCPing而不是普通的ping?
A: 普通ping使用ICMP协议,在某些网络环境下可能被防火墙阻止。TCPing使用TCP协议测试特定端口,能够:
- 测试具体服务的可用性(如HTTP、HTTPS、SSH等)
- 绕过ICMP阻止策略
- 提供更准确的应用层连通性测试
Q: 为什么有些域名无法进行IPv6测试?
A: 可能的原因:
- 域名未配置AAAA记录(IPv6 DNS记录)
- 您的网络不支持IPv6连接
- DNS服务器不支持IPv6解析
解决方案:使用
nslookup -type=AAAA domain.com
检查IPv6记录
Q: 测试结果显示连接成功,但服务实际不可用?
A: TCPing只测试TCP连接建立,不验证应用层协议。连接成功表示:
- 目标端口已开放
- 网络路径畅通
- 但具体服务可能存在应用层问题
Q: 彩色输出在某些终端不起作用?
A: 解决方案:
- Windows: 使用Windows Terminal或PowerShell 7+
- 旧版CMD: 不支持ANSI颜色,建议升级为
终端
(Terminal
)- Linux/macOS: 确保终端支持ANSI转义序列
Q: 高负载网络下测试结果不准确?
A: 建议:
- 增加测试次数:
tcping -n 10 target.com
- 适当增加间隔:
tcping -t 2000 target.com
- 关注统计结果而非单次测试值
- 在不同时间段进行多次测试
- 使用详细模式查看抖动信息:
tcping -v target.com
Q: 网络抖动值多少算正常?
A: 抖动值参考:
- < 5ms: 网络质量优秀,适合实时应用
- 5-20ms: 网络质量良好,一般应用无问题
- 20-50ms: 网络质量一般,可能影响实时性要求高的应用
- > 50ms: 网络不稳定,建议检查网络配置
注意: 抖动值只在详细模式(
-v
)下显示
Q: 为什么延迟很低但抖动很高?
A: 可能原因:
- 网络路径不稳定(路由切换)
- 网络设备负载波动
- ISP网络质量问题
- 本地网络环境干扰
建议: 在不同时间段多次测试,观察抖动变化趋势
Q: 如何测试特定本地IP绑定?
A: TCPing会自动选择最佳本地IP,若需指定,可考虑:
- 配置路由表
- 使用网络命名空间(Linux)
- 临时禁用其他网络接口
Q: 支持测试UDP端口吗?
A: 当前版本仅支持TCP连接测试。UDP测试需要不同的实现机制,可能在未来版本中添加。
- Go 1.24+
- Git
# 克隆仓库
git clone https://github.com/nodeseeker/tcping.git
cd tcping
# 编译当前平台版本
go build -o tcping src/main.go
# 编译优化版本(推荐)
CGO_ENABLED=0 go build -trimpath -ldflags="-w -s" -o tcping src/main.go
# Linux amd64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-w -s" -o tcping-linux-amd64 src/main.go
# Windows amd64
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-w -s" -o tcping-windows-amd64.exe src/main.go
# macOS arm64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-w -s" -o tcping-darwin-arm64 src/main.go
项目提供了 compiler.sh
脚本,支持一键编译所有平台版本:
chmod +x compiler.sh
./compiler.sh
编译产物将输出到 ./bin
目录,并自动生成SHA256校验文件。
项目提供了 test.sh
脚本用于验证编译后的程序功能:
chmod +x test.sh
./test.sh
测试脚本会验证IPv4、IPv6和域名解析等核心功能。
CGO_ENABLED=0
: 禁用CGO,确保静态链接-trimpath
: 移除路径信息,减小文件大小-ldflags="-w -s"
: 移除调试信息和符号表-o
: 指定输出文件名
本项目采用 GPL-3.0 开源许可证。
感谢所有为项目做出贡献的开发者!
🌟 如果TCPing对您有帮助,请给我们一个Star!
Made with ❤️ by nodeseeker