# tcping
**Repository Path**: bi1knd/tcping
## Basic Information
- **Project Name**: tcping
- **Description**: No description available
- **Primary Language**: Go
- **License**: GPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-03
- **Last Updated**: 2025-11-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TCPing
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://golang.org/)
[](https://github.com/nodeseeker/tcping/releases)
一款基于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](https://github.com/nodeseeker/tcping/releases) 页面,选择适合您系统的版本:

#### 🗂️ 支持的平台和架构
| 操作系统 | 支持架构 |
|----------|----------|
| **Linux** | amd64, 386, arm64, arm, loong64 |
| **Windows** | amd64, 386, arm64, arm |
| **macOS** | amd64, arm64 |
#### 🔧 安装步骤
1. **下载对应版本**:根据您的系统选择合适的压缩包
2. **解压文件**:解压后得到 `tcping` 可执行文件
3. **配置环境**:将文件移动到系统PATH目录
#### 📍 推荐安装位置
- **Linux/macOS**:`/usr/local/bin/tcping`
- **Windows**:`C:\Windows\System32\tcping.exe` 或添加到PATH环境变量
#### 🛠️ 权限设置
对于Linux/Unix-like系统,如果非`root`用户无法使用,则需要在安装后,使用`root`执行一次以下命令即可确保可执行权限:
```bash
chown root:root /usr/local/bin/tcping
chmod +x /usr/local/bin/tcping
```
#### ✅ 验证安装
```bash
tcping --version
TCPing 版本 v1.7.4
Copyright (c) 2025. All rights reserved.
```
### 方法二:
一键安装脚本(推荐)
#### 🌍 境外服务器
```bash
bash <(curl -Ls https://raw.githubusercontent.com/nodeseeker/tcping/main/install.sh) --force
```
#### 🇨🇳 境内服务器(国内优化版)
```bash
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等)
- **多源下载**:国内版本支持多个镜像源,提高下载成功率
- **错误处理**:完善的错误处理和用户提示
## 🚀 使用方法
### 基本语法
```bash
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` | 显示帮助信息 | - |
## 📖 使用示例
### 🔰 基础使用
#### 测试默认端口(80)
```bash
$ 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
```
#### 测试HTTPS端口(443)
```bash
$ tcping google.com 443
# 或使用 -p 参数
$ tcping -p 443 google.com
```
### 🎯 高级用法
#### 限制测试次数和间隔
```bash
$ 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
```
#### 强制使用IPv6
```bash
$ 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
```
#### 彩色输出和详细模式
```bash
$ 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
```
#### 网络质量分析
```bash
$ 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
```
### 🔢 直接IP地址测试
#### 标准IPv4地址
```bash
$ tcping 8.8.8.8 443
正在对 8.8.8.8 (IPv4 - 8.8.8.8) 端口 443 执行 TCP Ping
...
```
#### IPv6地址
```bash
$ tcping 2001:4860:4860::8888 443
正在对 2001:4860:4860::8888 (IPv6 - 2001:4860:4860::8888) 端口 443 执行 TCP Ping
...
```
### ⚡ 快速诊断
#### 短超时测试
```bash
$ 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 提供了强大而灵活的地址解析功能:
### IPv4 地址解析
| 格式类型 | 示例 | 说明 |
|----------|------|------|
| **标准点分十进制** | `8.8.8.8` | 传统IPv4格式 |
### IPv6 地址解析
- 支持标准 IPv6 地址格式(如 `2404:6800:4003:c04::8b`)
- 自动添加方括号用于端口分隔
### 域名解析
- 智能DNS解析,支持A和AAAA记录
- 根据 `-4` 或 `-6` 参数强制协议类型
- 自动选择最优可用地址
- 详细模式下显示所有解析到的IP地址
### 解析优先级
1. **直接IP解析**:解析标准IP地址格式
2. **DNS查询**:进行域名解析,优先选择IPv4地址
## 📊 网络统计分析
### 基础统计信息
TCPing 提供全面的网络连接统计:
- **发送/接收统计**:准确记录请求发送和响应接收数量
- **丢包率计算**:实时计算连接失败率
- **延迟统计**:最小、最大、平均往返时间(RTT)
### 网络抖动(Jitter)分析
在详细模式(`-v`)下,TCPing 会计算网络抖动:
#### 什么是网络抖动?
网络抖动是指连续两次测量之间延迟时间的变化,是衡量网络稳定性的重要指标:
- **低抖动**:网络连接稳定,延迟变化小
- **高抖动**:网络不稳定,可能影响实时应用
#### 抖动计算方法
```
抖动 = |当前RTT - 上一次RTT|
平均抖动 = 所有抖动值的平均数
```
#### 抖动值参考
| 抖动范围 | 网络质量 | 适用场景 |
|----------|----------|----------|
| < 5ms | 优秀 | 实时游戏、视频通话 |
| 5-20ms | 良好 | 一般网络应用 |
| 20-50ms | 一般 | 文件传输、网页浏览 |
| > 50ms | 较差 | 可能影响用户体验 |
#### 示例输出
```bash
$ 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
### 快速编译
```bash
# 克隆仓库
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
```
### 交叉编译
```bash
# 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` 脚本,支持一键编译所有平台版本:
```bash
chmod +x compiler.sh
./compiler.sh
```
编译产物将输出到 `./bin` 目录,并自动生成SHA256校验文件。
### 功能测试
项目提供了 `test.sh` 脚本用于验证编译后的程序功能:
```bash
chmod +x test.sh
./test.sh
```
测试脚本会验证IPv4、IPv6和域名解析等核心功能。
### 编译参数说明
- `CGO_ENABLED=0`: 禁用CGO,确保静态链接
- `-trimpath`: 移除路径信息,减小文件大小
- `-ldflags="-w -s"`: 移除调试信息和符号表
- `-o`: 指定输出文件名
## 📄 许可证
本项目采用 [GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.html) 开源许可证。
### 👥 贡献者
感谢所有为项目做出贡献的开发者!
---
**🌟 如果TCPing对您有帮助,请给我们一个Star!**
Made with ❤️ by [nodeseeker](https://github.com/nodeseeker)