# 关于"端口 2222"连接问题的说明
## 📌 问题概述
用户反馈遇到以下错误:
```
1. rustdx-complete 依赖通达信 TCP 服务(端口 2222)
2. 通达信服务未运行 - nc -zv 127.0.0.1 2222 返回 "Connection refused"
3. 无 TCP 连接 - 当前到 2222 端口的连接数为 0
```
## ✅ 正确理解
这是一个**完全的误解**!
### rustdx-complete 的真实架构
```
┌─────────────────────────────────────────────────────────┐
│ 你的应用 (Rust/Python/其他语言) │
└───────────────────┬─────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ rustdx-complete (TCP 客户端库) │
│ - 不需要本地服务 │
│ - 不监听任何端口 │
│ - 只做客户端连接 │
└───────────────────┬─────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ 通达信公共服务器 (远程) │
│ IP: 115.238.56.198 (及其他 18 个备用服务器) │
│ 端口: 7709 (不是 2222!) │
└─────────────────────────────────────────────────────────┘
```
### 关键点
| 项目 | 说明 |
|------|------|
| **本地端口 2222** | ❌ 完全不相关!rustdx-complete 不使用 |
| **本地通达信服务** | ❌ 不需要!rustdx-complete 是独立库 |
| **远程服务器** | ✅ 连接到通达信公共服务器 (7709端口) |
| **网络要求** | ✅ 互联网连接 + TCP 出站(7709) |
---
## 🔧 正确的使用方式
### 基础代码
```rust
use rustdx_complete::tcp::{Tcp, Tdx};
use rustdx_complete::tcp::stock::SecurityQuotes;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// ✅ 直接连接到远程服务器
let mut tcp = Tcp::new()?; // 连接到 115.238.56.198:7709
let mut quotes = SecurityQuotes::new(vec![(0, "000001")]);
quotes.recv_parsed(&mut tcp)?;
for quote in quotes.result() {
println!("{}: {}", quote.code, quote.price);
}
Ok(())
}
```
### 常见错误代码
```rust
// ❌ 错误:尝试连接本地端口
// let stream = TcpStream::connect("127.0.0.1:2222")?;
// ❌ 错误:检查本地端口
// Command::new("nc").args(&["-zv", "127.0.0.1", "2222"]);
// ✅ 正确:让 rustdx-complete 自动连接
let mut tcp = Tcp::new()?;
// ✅ 正确:指定远程服务器
use std::net::SocketAddr;
let addr: SocketAddr = "115.238.56.198:7709".parse()?;
let mut tcp = Tcp::new_with_ip(&addr)?;
```
---
## 🧪 验证连接
### 测试 1: 使用示例程序
```bash
cargo run --example test_connection
```
**预期输出**:
```
🚀 rustdx-complete 连接测试
方法1: 使用默认连接
连接到默认服务器: 115.238.56.198:7709
✅ 连接成功!
📊 股票行情:
000001 : 11.46元 (+0.00%)
600000 : 11.86元 (+0.00%)
✅ 数据获取成功!
```
### 测试 2: 使用诊断脚本
```bash
./scripts/diagnose_network.sh
```
**预期输出**:
```
============================================================
1. 检查网络连接
============================================================
✅ 互联网连接正常
============================================================
2. 测试通达信服务器连接
============================================================
测试 115.238.56.198:7709 ... ✅ 连接成功
测试 114.80.149.19:7709 ... ✅ 连接成功
...
结果: 15 个可用, 4 个失败
```
### 测试 3: 使用 netcat(手动测试)
```bash
# ❌ 错误:测试本地端口
nc -zv 127.0.0.1 2222 # 这没有意义!
# ✅ 正确:测试远程服务器
nc -zv 115.238.56.198 7709
# 输出:
# Connection to 115.238.56.198 7709 port [tcp/*] succeeded!
```
### 测试 4: 使用 ping
```bash
# 测试网络连通性
ping 115.238.56.198
# 输出:
# 64 bytes from 115.238.56.198: icmp_seq=1 ttl=54 time=20.5 ms
```
---
## 📚 文档和工具
### 新增文档
1. **[NETWORK_CONNECTION_GUIDE.md](NETWORK_CONNECTION_GUIDE.md)**
- 完整的网络连接指南
- 工作原理详解
- 故障排查步骤
- FAQ
2. **[CONNECTION_TROUBLESHOOTING.md](CONNECTION_TROUBLESHOOTING.md)**
- 快速故障排查
- 常见错误和解决方案
- 检查清单
3. **[scripts/diagnose_network.sh](scripts/diagnose_network.sh)**
- 自动化诊断脚本
- 测试所有服务器
- 检查防火墙
- 生成报告
### 新增示例
- **[examples/test_connection.rs](examples/test_connection.rs)**
- 演示正确的连接方式
- 测试多个服务器
- 自动故障转移
---
## 🎯 总结
### ❌ 错误理解
- 需要在本地运行通达信服务
- 需要监听端口 2222
- 需要配置本地 TCP 服务器
### ✅ 正确理解
- rustdx-complete 是纯客户端库
- 直接连接到通达信公共服务器
- 默认服务器:115.238.56.198:7709
- 内置 19 个备用服务器
- 不需要任何本地服务
### 🚀 快速开始
```bash
# 1. 安装
cargo add rustdx-complete
# 2. 测试连接
cargo run --example test_connection
# 3. 诊断问题(如果有)
./scripts/diagnose_network.sh
# 4. 开始使用
# 见 examples/ 目录中的示例代码
```
---
## 📞 获取帮助
如果仍然遇到问题:
1. **查看文档**: [NETWORK_CONNECTION_GUIDE.md](NETWORK_CONNECTION_GUIDE.md)
2. **运行诊断**: `./scripts/diagnose_network.sh`
3. **查看示例**: `examples/` 目录
4. **提交 Issue**: [https://github.com/jackluo2012/rustdx/issues](https://github.com/jackluo2012/rustdx/issues)
---
**记住**: rustdx-complete 不使用端口 2222!我们连接的是远程服务器的端口 7709!
**创建日期**: 2026-01-05
**版本**: v0.6.6