Skip to content

cWinsock 开发计划

📋 项目开发进度跟踪文档

📖 目录


✅ 已完成功能

核心功能

1. 基础网络通信

  • [x] TCP 客户端/服务器通信
  • [x] UDP 客户端/服务器通信
  • [x] 异步 socket 封装(基于 VbAsyncSocket)
  • [x] 连接状态管理
  • [x] 异常处理机制

2. 事件驱动模型

  • [x] Connect 事件(连接成功)
  • [x] CloseEvent 事件(连接关闭)
  • [x] ConnectionRequest 事件(新连接请求)
  • [x] DataArrival 事件(数据到达)
  • [x] SendProgress 事件(发送进度)
  • [x] SendComplete 事件(发送完成)
  • [x] Error 事件(错误处理)

3. 对象模型设计

  • [x] 纯类实现,无需控件
  • [x] 直接对象引用传递(无需索引查找)
  • [x] 自动客户端集合管理(Clients 集合)
  • [x] 服务器-客户端父子关系维护
  • [x] 事件代理机制(服务器统一处理客户端事件)

4. TCP 客户端事件代理

  • [x] 自动通过父服务器触发客户端事件
  • [x] 统一数据到达处理
  • [x] 统一连接断开处理
  • [x] 统一错误处理

5. UDP 虚拟客户端管理

  • [x] 为每个远程地址:端口创建虚拟客户端对象
  • [x] 模拟 TCP 连接行为
  • [x] 支持 ConnectionRequest 事件
  • [x] 自动维护虚拟客户端集合

6. 连接请求拦截

  • [x] ConnectionRequest 事件中的 DisConnect 参数
  • [x] 黑名单机制
  • [x] 白名单机制
  • [x] 端口范围限制
  • [x] 自动断开和资源清理

7. 文本编码支持

  • [x] ScpAcp(系统默认代码页,GBK)
  • [x] ScpUtf8(UTF-8 编码)
  • [x] ScpUnicode(Unicode 宽字符)
  • [x] 字符串/字节数组灵活转换

8. 数据缓冲区管理

  • [x] TCP 接收缓冲区(m_baRecvBuffer)
  • [x] UDP 虚拟客户端缓冲区(UserData)
  • [x] 部分读取支持
  • [x] 自动缓冲剩余数据

9. 远程地址解析

  • [x] 域名自动解析
  • [x] IP 和域名智能选择
  • [x] RemoteHost/RemoteHostIP/RemotePort 属性

10. 应用场景

  • [x] TCP 服务器模式
  • [x] TCP 客户端模式
  • [x] UDP 服务器模式
  • [x] UDP 客户端模式
  • [x] 双向通信
  • [x] 广播/多播基础支持

11. 数据封包协议 ✅ (2025-05-25, 优化 2026-06-09)

  • [x] 字符分隔符协议(ppDelimiter)- 支持自定义分隔符
  • [x] 定长协议(ppFixedLength)
  • [x] 长度头协议(ppLengthHeader)- 支持 2/4 字节头,大小端
  • [x] 独立协议类 cPacketProtocol - 每个客户端独立实例
  • [x] 自动封包(SendData 调用 Encode)
  • [x] 自动解包(OnReceive 调用 Decode)
  • [x] MessageArrival 事件(完整消息到达)
  • [x] 协议配置继承(新客户端继承服务器配置)
  • [x] MaxPacketSize 属性(默认1MB)- 单包最大限制,防恶意超大包
  • [x] MaxBufferSize 属性(默认4MB)- 缓冲区累积上限,防内存耗尽
  • [x] 心跳走协议编码,不污染协议状态机
  • [x] UDP 客户端支持分包协议
  • [x] 协议模式只触发 MessageArrival(移除 DataArrival 双触发)
  • [x] FixedLength 超长报错(不静默截断)
  • [x] 2字节头 Encode 溢出修复
  • [x] 大端4字节解析溢出修复

12. TCP 智能心跳 ✅ (2025-05-25, 优化 2026-06-09)

  • [x] 独立心跳类 cHeartbeat
  • [x] 服务端超时检测(默认 2 分钟)
  • [x] 客户端自动心跳(默认 50 秒间隔)
  • [x] 智能跳过(有数据收发时跳过心跳)
  • [x] 内嵌 cTimer 自动驱动(无需外部 PollHeartbeat)
  • [x] ClientTimeout 事件
  • [x] HeartbeatSent 事件
  • [x] 收发自动更新 LastActivityTime
  • [x] 心跳发送走协议编码(修复心跳绕过协议的 Bug)

13. GetData 增强方法 ✅ (2025-05-25)

  • [x] GetDataText() - 返回值型文本获取
  • [x] GetDataTextUTF8() - UTF-8 文本
  • [x] GetDataTextUnicode() - Unicode 文本
  • [x] GetDataHex() - 十六进制字符串
  • [x] GetDataByteArray() - 字节数组

🚧 待开发功能

1. 性能优化(中优先级)

4.1 批量发送

vb
' 批量发送多条消息,减少系统调用
Public Sub SendBatch(vData As Variant)

4.2 数据压缩

  • 可选的压缩算法支持
  • 大数据自动压缩
  • 透明压缩/解压

4.3 连接池

  • 复用 TCP 连接
  • 减少 Connect 开销
  • 自动负载均衡

5. 高级功能(低优先级)

5.1 SSL/TLS 加密

  • 支持 HTTPS/WSS
  • 证书验证
  • 安全握手

5.2 WebSocket 协议

  • 完整的 WebSocket 支持
  • 握手和帧处理
  • 自动 Ping/Pong

5.3 断线重连

  • 自动重连机制
  • 指数退避算法
  • 最大重试次数

5.4 限流控制

  • 发送速率限制
  • 接收速率限制
  • 流量统计

📊 开发优先级

P0 - 核心功能(必须实现) ✅ 已完成

  1. 数据封包协议 ✅ (2025-05-25, 优化 2026-06-09)

  2. TCP 智能心跳 ✅ (2025-05-25, 优化 2026-06-09)

P1 - 增强功能(重要) ✅ 已完成

  1. GetData 增强方法 ✅ (2025-05-25)
    • GetDataText/GetDataHex/GetDataByteArray 等返回值风格方法

P2 - 优化功能(可选)

  1. 性能优化
    • 批量发送
    • 数据压缩
    • 连接池

P3 - 高级功能(长期规划)

  1. SSL/TLS 加密
  2. WebSocket 协议
  3. 断线重连
  4. 限流控制

🗺️ 技术路线图

阶段一:封包协议实现 ✅ 已完成 (2025-05-25)

  • Day 1-2: 设计协议接口和数据结构
  • Day 3-4: 实现内置协议(CRLF、定长、长度头)
  • Day 5: 实现自定义协议接口和测试

阶段二:心跳机制实现 ✅ 已完成 (2025-05-25)

  • Day 1-2: 实现服务端超时检测
  • Day 3: 实现客户端心跳保活

阶段三:GetData 增强 ✅ 已完成 (2025-05-25)

  • Day 1: 实现 4 个新方法和测试

阶段三.五:协议安全加固与优化 ✅ 已完成 (2026-06-09)

  • 修复 2 个严重 Bug(心跳绕过协议编码、2字节头溢出)
  • 修复 1 个大端解析 Bug
  • 新增 MaxPacketSize/MaxBufferSize 安全属性
  • UDP 支持分包协议
  • 移除 DataArrival 双触发
  • FixedLength 超长改为报错
  • 详见 分包协议与心跳机制

阶段四:性能优化(待开发)

  • Day 1: 批量发送实现
  • Day 2: 数据压缩实现
  • Day 3: 连接池设计

阶段五:高级功能(长期)

  • 根据用户需求和反馈逐步实现

📝 使用建议

开发期间

  • 保持向后兼容性
  • 不影响现有功能
  • 提供充分的单元测试
  • 更新文档和示例

发布策略

  • 分阶段发布
  • 收集用户反馈
  • 持续优化改进

🔗 相关文档


最后更新: 2026-06-09

VB6及其LOGO版权为微软公司所有