rustdx-complete 1.0.0

功能完整的 A 股数据获取库,支持数据验证、技术指标、智能缓存、交易日历
# 关于"端口 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