mirror of
https://gitee.com/ldcsaa/HP-Socket.git
synced 2024-11-29 18:28:14 +08:00
1532 lines
57 KiB
Plaintext
1532 lines
57 KiB
Plaintext
==========================================================================================
|
||
v6.0.3 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、修复BUG:上个版本升级 llhttp 时,意外导出了 llhttp 库函数
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 3.0.15
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v6.0.2 兼容 HP-Socket v6.0.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v6.0.2 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、支持定时回收垃圾内存和被动回收垃圾内存(默认使用定时回收,回收间隔 15 秒)
|
||
2、支持在没有安装 MFC 的环境下编译
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 3.0.14 版本
|
||
2、llhttp 升级到 9.2.1 版本
|
||
3、mimalloc 升级到 2.1.7 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v6.0.2 兼容 HP-Socket v6.0.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v6.0.1 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、用 VS2022 及后续编译器编译 HP-Socket,会自动为 HP-Socket 工作线程设置唯一线程名称,方便跟踪调试
|
||
2、TCP Client/Agent 以同步方式连接服务端时,支持通过 SetSyncConnectTimeout() 设置连接超时时间
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 3.0.13 版本
|
||
2、zlib 升级到 1.3.1 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v6.0.1 兼容 HP-Socket v5.9.5 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.9.5 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、问题修复:由于 v5.9.4 版本升级了 KCP 导致 UDP ARQ 组件不可用
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.9.5 兼容 HP-Socket v5.9.4 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.9.4 更新:
|
||
==========================================================================================
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 3.0.12 版本
|
||
2、llhttp 升级到 9.1.3 版本
|
||
3、brotli 升级到 1.1.0 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.9.4 兼容 HP-Socket v5.9.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.9.3 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、问题修复:通过 POST/PUT 等带有请求内容的 HTTP 方法升级 websocket 协议时,可能会导致 HTTP Server 异常
|
||
2、UDP Client/Server 之间的单个心跳包发送失败不会立刻断开连接,只检测心跳是否超时来判断是否要断开连接
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 1.1.1v 版本
|
||
2、llhttp 升级到 8.1.1 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.9.3 兼容 HP-Socket v5.9.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.9.2 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、HTTP Cookie 请求和响应头 ‘Cookie’、‘Set-Cookie’ 支持不区分大小写
|
||
2、小范围代码优化
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 1.1.1u 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.9.2 兼容 HP-Socket v5.9.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.9.1 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、更新流式压缩/解压相关的若干 API,支持分段压缩/解压(参考:Change-APIs.txt)
|
||
2、更新 SSL 模块,支持 OpenSSL 3.0
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、llhttp 升级到 8.1.0 版本
|
||
2、zlib 升级到 1.2.13 版本
|
||
3、openssl 升级到 1.1.1s 版本
|
||
4、mimalloc 升级到 1.7.9 版本
|
||
5、jemalloc 升级到 5.3.0 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、除了流式压缩/解压相关的若干 API 外,HP-Socket v5.9.1 兼容 HP-Socket v5.8.8 版本,如果没有用到流式压缩/解压 API 可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.8 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、Client/Agent 连接服务端时支持指定主机名称,格式:<hostaddress>[^<hostname>],其中 ^<hostname> 可选。应用场景之一:通过代理服务器向目标服务器传递 SSL SNI hostname
|
||
2、增加字符编码转换系列函数(参考:Change-APIs.txt),支持指定源字符串长度
|
||
3、修复 SSL Pull/Pack Server/Agent 组件在手工启动SSL(SetSSLAutoStart(FALSE))场景下的异常问题
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、zlib 升级到 1.2.12 版本
|
||
2、openssl 升级到 1.1.1n 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.8 完全兼容 HP-Socket v5.8.7 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.7 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、优化垃圾对象回收检测机制,提高通信组件在高负载、高并发场景的健壮性
|
||
2、支持 VS 2022 开发环境
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、mimalloc 升级到 1.7.5 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.7 完全兼容 HP-Socket v5.8.6 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.6 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、增加 ZLib/GZip、Brotil 流式压缩/解压组件:IHPCompressor 和 IHPDecompressor
|
||
2、优化垃圾对象回收检测机制,提高通信组件在高负载、高并发场景的健壮性
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 1.1.1m 版本
|
||
2、llhttp 升级到 6.0.6 版本
|
||
3、mimalloc 升级到 1.7.3 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.6 完全兼容 HP-Socket v5.8.5 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.5 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、增加线程池监听器接口 IHPThreadPoolListener,监听线程池生命周期事件
|
||
2、消除隐患:Client 系列组件用作函数局部变量时,如果使用不当可能会在销毁 Client 对象时崩溃
|
||
3、支持通过指定平台工具集编译
|
||
4、增加 MSBuild 一键编译脚本
|
||
5、代码优化,提高代码健壮性
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、openssl 升级到 1.1.1l 版本
|
||
2、llhttp 升级到 6.0.5 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.5 完全兼容 HP-Socket v5.8.4 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.4 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、增加全局函数:SYS_Calloc()、SYS_Alloca()
|
||
2、TCP 系列组件增加接口方法:SetNoDelay()、IsNoDelay()
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、mimalloc 升级到 1.7.2 版本
|
||
2、llhttp 升级到 6.0.4 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.4 完全兼容 HP-Socket v5.8.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.3 更新:
|
||
==========================================================================================
|
||
|
||
> 主要更新:
|
||
-----------------
|
||
1、Bug 修复:ARQ UDP 组件发送数据时可能发生死锁
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、mimalloc 升级到 1.7.1 版本
|
||
2、llhttp 升级到 6.0.2 版本
|
||
3、OpenSSL 升级到 1.1.1k 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.3 完全兼容 HP-Socket v5.8.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.2 更新:
|
||
==========================================================================================
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、mimalloc 升级到 1.7.0 版本
|
||
2、llhttp 升级到 4.0.0 版本
|
||
3、OpenSSL 升级到 1.1.1j 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.2 完全兼容 HP-Socket v5.8.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.8.1 更新:
|
||
==========================================================================================
|
||
|
||
> 第三方库更新:
|
||
-----------------
|
||
1、HTTP 解析器:llhttp 取代 http_parser
|
||
2、内存分配器:mimalloc 取代 jemalloc
|
||
3、OpenSSL 升级到 1.1.1i 版本
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、库公开头文件移到 include/hpsocket 目录
|
||
2、Windows目录结构调整:Common/Src 改为 Src/Common,Common/Lib 改为 Dependent
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.8.1 完全兼容 HP-Socket v5.7.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.7.3 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、增加 Brotli 压缩/解压支持,(提供 _BROTLI_DISABLED 预编译宏用于关闭 Brotli 库功能)
|
||
2、OpenSSL 升级到 1.1.1h 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.7.3 完全兼容 HP-Socket v5.7.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.7.2 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、代码优化,提高稳定性
|
||
2、OpenSSL 升级到 1.1.1g 版本
|
||
3、http-parser 升级到 2.9.4 版本
|
||
4、kcp 升级到 1.6 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.7.2 完全兼容 HP-Socket v5.7.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.7.1 更新:
|
||
==========================================================================================
|
||
|
||
> UDP 组件更新:
|
||
-----------------
|
||
1、增加新组件:UDP Node
|
||
1) UDP Node 没有“连接”的概念,可以与任意地址相互收发数据
|
||
2) UDP Node 支持三种运行模式:单播、组播和广播
|
||
3) 增加 UDP Node 组件示例 Demo ‘TestUDPNode’
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、所有组件增加 Wait() 方法,用于等待组件关闭
|
||
2、所有通信组件增加 SetReuseAddressPolicy() 方法,支持设置地址重用策略
|
||
3、所有 SSL 通信组件增加 SetSSLCipherList() 方法,支持设置 SSL 加密套件
|
||
4、大量 API 更新,代码重构、优化
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.7.1 改动或删除了一些旧版本的 API,升级时请参考 Chang-APIs.txt
|
||
|
||
==========================================================================================
|
||
v5.6.4 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、代码优化,提高稳定性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.6.4 完全兼容 HP-Socket v5.6.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.6.3 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、代码优化,提高稳定性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.6.3 完全兼容 HP-Socket v5.6.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.6.2 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、代码优化,提高稳定性
|
||
2、修复 v5.6.1 版本中 SSL 组件对 Windows XP 系统不兼容的问题
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.6.2 完全兼容 HP-Socket v5.6.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.6.1 更新:
|
||
==========================================================================================
|
||
|
||
> SSL 组件更新:
|
||
-----------------
|
||
1、所有 SSL 组件增加以下接口方法支持加载内存证书
|
||
1) Server:SetupSSLContextByMemory(), AddSSLContextByMemory()
|
||
2) Agent:SetupSSLContextByMemory()
|
||
3) Client:SetupSSLContextByMemory()
|
||
2、所有 SSL 组件增加 GetSSLSessionInfo() 方法,用来获取 SSL 会话相关信息
|
||
3、SSL Server 组件提供默认的 SNI 服务器域名绑定机制,大多数情形下应用程序不必自定义 SNI 回调函数
|
||
1) 当 SetupSSLContext() 的 'fnServerNameCallback' 参数值为 nullptr 则启用默认的服务器域名绑定机制
|
||
2) BindSSLServerName():绑定服务器域名到指定证书
|
||
3) HP_SSL_DefaultServerNameCallback():默认 SNI 回调函数
|
||
|
||
> HTTP 组件更新:
|
||
-----------------
|
||
1、HTTP Server 组件的 SendWSMessage() 方法删除 lpszMask 参数
|
||
2、所有 HTTP 组件的 SendWSMessage() 方法的 pData 参数类型改为 const BYTE*,因此可以传入常量
|
||
3、所有 HTTP 组件添加 SendChunkData() 方法以方便地发送 Chunked 数据
|
||
|
||
> UDP 组件更新:
|
||
-----------------
|
||
1、优化 Linux 平台的 UDP Cast 组件,使得其与 Windows 平台的 UDP Cast 组件保持行为一致
|
||
2、提升所有 UDP 组件的 IPv6 兼容性
|
||
3、UDP Client/Server 组件关闭时自动向对端发送“关闭通知”数据报
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、jemalloc 升级到 5.2.1 版本
|
||
2、OpenSSL 升级到 1.1.1d 版本
|
||
3、代码优化,提高稳定性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.6.1 基本兼容 HP-Socket v5.5.3 版本(HTTP 组件的 SendWSMessage() 方法除外)
|
||
|
||
==========================================================================================
|
||
v5.5.3 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、代码优化,提高稳定性
|
||
2、OpenSSL 升级到 1.1.0k 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.5.3 完全兼容 HP-Socket v5.5.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.5.2 更新:
|
||
==========================================================================================
|
||
|
||
> UDP 更新:
|
||
-----------------
|
||
1、放宽 UDP 组件的最大报文长度限制,SetMaxDatagramSize() 方法的最大值可以设置到 64KB
|
||
2、放宽 ARQ UDP 组件的最大传输单元长度限制,SetMaxTransUnit() 方法的最大值可以设置到 64KB
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、完善 Delphi SDK 及其示例 Demo
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.5.2 完全兼容 HP-Socket v5.5.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.5.1 更新:
|
||
==========================================================================================
|
||
|
||
> UDP 更新:
|
||
-----------------
|
||
1、增加 ARQ UDP 组件:IUdpArqServer、IUdpArqClient
|
||
2、增加 ARQ UDP 示例 TestEcho-ARQ 和性能测试示例 TestEcho-ARQ-PFM
|
||
3、ARQ UDP 组件详细说明请参考开发文档 《HP-Socket Development Guide》
|
||
4、优化 IUdpServer 组件,修复潜在缺陷
|
||
5、C# SDK 增加 UDP 组件封装类
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、jemalloc 升级到 5.2.0 版本
|
||
2、http-parser 升级到 2.9.2 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.5.1 完全兼容 HP-Socket v5.4.4 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.4.4 更新:
|
||
==========================================================================================
|
||
|
||
> TCP 组件更新:
|
||
-----------------
|
||
1、IAgent 组件支持在连接服务器时指定本地IP地址和(或)本地端口
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、代码优化
|
||
2、http-parser 升级到 2.9.0 版本
|
||
3、OpenSSL 升级到 1.1.0j 版本
|
||
4、提供 _UDP_DISABLED 预编译宏用于移除 UDP 组件
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.4.4 完全兼容 HP-Socket v5.4.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.4.3 更新:
|
||
==========================================================================================
|
||
|
||
> HTTP 组件更新:
|
||
-----------------
|
||
1、HTTP 组件可以手工启动 HTTP 通信,从而可以对 HTTP 通信执行 SOCKS 代理服务器设置等前置操作
|
||
2、HTTP 组件(Server/Agent/Client)增加以下接口方法支持手工启动 HTTP 通信
|
||
1) StartHttp():手工启动 HTTP 通信,当通信组件设置为非自动启动时,需要调用本方法启动 HTTP 通信
|
||
2) SetHttpAutoStart():设置 HTTP 通信启动方式(默认:TRUE,自动启动)
|
||
3) IsHttpAutoStart():获取 HTTP 通信启动方式
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、Bug 修复:UDP Server 在高并发场景下可能重复触发 OnAccept 事件
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.4.3 完全兼容 HP-Socket v5.4.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.4.2 更新:
|
||
==========================================================================================
|
||
|
||
> SSL 组件更新:
|
||
-----------------
|
||
1、SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https 通信执行代理服务器设置等前置操作
|
||
2、SSL 组件(Server/Agent/Client)增加以下接口方法支持手工启动 SSL 握手
|
||
1) StartSSLHandShake():手工启动 SSL 握手,当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手
|
||
2) SetSSLAutoHandShake():设置通信组件握手方式(默认:TRUE,自动握手)
|
||
3) IsSSLAutoHandShake():获取通信组件握手方式
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、所有可能导致 Socket 关闭的组件接口方法都在 Socket 通信线程中异步触发 OnClose 事件
|
||
2、Server 与 Agent 组件的 DIRECT 发送策略也支持通过 GetPendingDataLength() 方法实现流控
|
||
3、Server 与 Agent 组件的 Disconnect() 方法不再支持‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开
|
||
4、OnSend 事件支持 三种同步策略
|
||
1) OSSP_NONE:不同步(默认)
|
||
2) OSSP_CLOSE:同步 OnClose
|
||
3) OSSP_RECEIVE:同步 OnClose 和 OnReceive(只用于 TCP 组件)
|
||
5、OpenSSL 升级到 1.1.0i 版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.4.2 完全兼容 HP-Socket v5.4.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.4.1 更新:
|
||
==========================================================================================
|
||
|
||
> 加入线程池公共组件:
|
||
-----------------
|
||
1、加入 IHPThreadPool 线程池公共组件
|
||
2、IHPThreadPool 主要方法:
|
||
1) Start:启动线程池
|
||
2) Stop:关闭线程池
|
||
3) Submit:提交任务
|
||
4) AdjustThreadCount:调整线程池大小
|
||
|
||
> 接口更新:
|
||
-----------------
|
||
1、IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口
|
||
2、IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口
|
||
3、IClient/IAgent/IServer 接口增加方法 IsConnected(),检测是否有效连接
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、修复已知问题
|
||
2、性能优化
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.4.1 完全兼容 HP-Socket v5.3.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.3.2 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、更新版本号,保持与 Linux 版的版本号同步
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.3.2 完全兼容 HP-Socket v5.3.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.3.1 更新:
|
||
==========================================================================================
|
||
|
||
> 常规更新:
|
||
-----------------
|
||
1、修复 C# SDK 关于 SSL 初始化失败 Bug
|
||
2、http-parser 升级到 2.8.1 版本
|
||
3、OpenSSL 升级到 1.1.0h 版本
|
||
4、提供 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.3.1 完全兼容 HP-Socket v5.2.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.2.1 更新:
|
||
==========================================================================================
|
||
|
||
> 发布包调整:
|
||
-----------------
|
||
1、版本号修订:Windows 和 Linux 发行版使用统一版本号
|
||
2、发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLL
|
||
3、发布文件默认包含 SSL 和 HTTP 组件
|
||
4、如果想移除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编译
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、代码优化和已知 Bug 修复
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.2.1 完全兼容 HP-Socket v5.1.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.1.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加暂停接收功能:
|
||
-----------------
|
||
1、所有 Server/Agent/Client 组件增加‘暂停接收数据’功能(UDP Server 组件除外)
|
||
2、API 更新:
|
||
1) HP_Server_PauseReceive (增加)
|
||
2) HP_Server_IsPauseReceive (增加)
|
||
3) HP_Agent_PauseReceive (增加)
|
||
4) HP_Agent_IsPauseReceive (增加)
|
||
5) HP_Client_PauseReceive (增加)
|
||
6) HP_Client_IsPauseReceive (增加)
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、TCP Agent 增加方法 HP_Agent_ConnectWithExtra(),支持在连接完成前绑定附加数据
|
||
2、公共代码包 vc-common-src 版本升级到 v2.3.22
|
||
3、OpenSSL 升级到 1.1.0g
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.1.1 完全兼容 HP-Socket v5.0.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.0.2 更新:
|
||
==========================================================================================
|
||
|
||
> Bug 修复:
|
||
-----------------
|
||
1、修复 PULL/PACK 组件偶尔可能会意外崩溃 Bug
|
||
2、受影响组件:Pull Server、Pull Agent、Pack Server、Pack Agent
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v5.0.2 完全兼容 HP-Socket v5.0.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v5.0.1 更新:
|
||
==========================================================================================
|
||
|
||
> IPv6 支持:
|
||
-----------------
|
||
1、所有通信组件支持 IPv6
|
||
2、组件接口没有变化,组件内部通过传入的地址参数自动识别 IPv4 / IPv6
|
||
3、API 更新:
|
||
1) enum En_HP_IPAddrType (增加)
|
||
2) struct HP_TIPAddr (增加)
|
||
3) SYS_GetIPv4InAddr (删除)
|
||
4) SYS_GetOptimalIPByHostName (删除)
|
||
5) SYS_IsIPAddress (修改)
|
||
6) SYS_GetIPAddress (修改)
|
||
7) SYS_EnumHostIPAddresses (增加)
|
||
8) SYS_FreeHostIPAddresses (增加)
|
||
|
||
> SSL 通信组件:
|
||
-----------------
|
||
1、多 SSL 证书支持,每个通信组件对象可以使用不同的 SSL 证书
|
||
2、通信组件对象绑定独立的 SSL Context,取代旧版本的全局唯一 SSL Context
|
||
3、API 更新:
|
||
1) HP_SSL_Initialize (删除)
|
||
2) HP_SSL_Cleanup (删除)
|
||
3) HP_SSL_IsValid (删除)
|
||
4) HP_SSLAgent_SetupSSLContext (增加)
|
||
5) HP_SSLClient_SetupSSLContext (增加)
|
||
6) HP_SSLServer_SetupSSLContext (增加)
|
||
7) HP_SSLServer_AddSSLContext (增加)
|
||
8) HP_SSLAgent_CleanupSSLContext (增加)
|
||
9) HP_SSLClient_CleanupSSLContext (增加)
|
||
10) HP_SSLServer_CleanupSSLContext (增加)
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、Demo 更新:所有 Demo 支持 IPv6;所有 SSL Demo 支持新的证书机制
|
||
2、公共代码包 vc-common-src 升级到 v2.3.20
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、SSL 组件:需要调整 SSL Context 初始化方式
|
||
2、其他组件:HP-Socket v5.0.1 完全兼容 HP-Socket v4.x.x 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.3.1 更新:
|
||
==========================================================================================
|
||
|
||
> HTTP:
|
||
-----------------
|
||
1、IHttpClient 和 IHttpAgent 组件兼容没有长度标识(如:Content-Length Header)的 HTTP 响应报文
|
||
2、IHttpClient 和 IHttpAgent 组件改进 HEAD 请求的响应处理方式,应用程序无需在 OnHeadersComplete 事件中返回特殊值 HPR_SKIP_BODY
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、公共代码包 vc-common-src 升级到 v2.3.19
|
||
2、OpenSSL 升级到 1.1.0f
|
||
3、优化 IServer/IAgent 组件,提升性能和稳定性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v4.3.1 完全兼容 HP-Socket v4.2.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.2.1 更新:
|
||
==========================================================================================
|
||
|
||
> HTTP Cookie 管理:
|
||
-----------------
|
||
1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookie
|
||
2、Cookie 管理器实现了标准 HTTP Cookie 功能,支持 Max-Age、expires、httpOnly、secure
|
||
3、Cookie 管理器支持 Cookie 序列化与反序列化
|
||
4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能
|
||
|
||
> HTTP Sync Client 通信组件:
|
||
-----------------
|
||
1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListener
|
||
2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有通信事件
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4C
|
||
2、公共代码包 vc-common-src 升级到 v2.3.18
|
||
3、OpenSSL 升级到 1.1.0e
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HTTP Sync Client 组件:需要调整 Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 的调用参数
|
||
2、其他组件:HP-Socket v4.2.1 完全兼容 HP-Socket v4.1.x 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.1.3 更新:
|
||
==========================================================================================
|
||
|
||
> 代码调整:
|
||
-----------------
|
||
1、修正 ITcpServer 和 ITcpAgent 组件的 Onclose 事件在 SP_DIRECT 发送模式下的触发规则
|
||
2、IClient 组件优化,提高稳定性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v4.1.3 完全兼容 HP-Socket v4.1.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.1.2 更新:
|
||
==========================================================================================
|
||
|
||
> 代码调整:
|
||
-----------------
|
||
1、采用新环形缓冲区算法提高异步操作安全性
|
||
2、采用延时释放策略提高 HTTP 异步操作安全性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v4.1.2 完全兼容 HP-Socket v4.1.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.1.1 更新:
|
||
==========================================================================================
|
||
|
||
> WebSocket 支持:
|
||
-----------------
|
||
1、所有 HTTP 组件增加 WebSocket 方法:
|
||
1) SendWSMessage(): 发送 WebSocket 数据包
|
||
2) GetWSMessageState(): 获取当前 WebSocket 状态
|
||
2、所有 HTTP 组件监听器增加 WebSocket 事件:
|
||
1) OnWSMessageHeader(): WebSocket 数据包头通知
|
||
2) OnWSMessageBody(): WebSocket 数据包体通知
|
||
3) OnWSMessageComplete(): WebSocket 数据包完成通知
|
||
3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 支持 WebSocket
|
||
|
||
> 增加 HTTP Sync Client 通信组件:
|
||
-----------------
|
||
1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器
|
||
2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClient
|
||
3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequester
|
||
4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v4.1.1 完全兼容 HP-Socket v4.0.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v4.0.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加 HTTP 系列通信组件:
|
||
-----------------
|
||
1、新增 HTTP Server 组件:
|
||
1) 组件类: CHttpServer、CHttpsServer
|
||
2) 实现接口: ITcpServer / IComplexHttpResponder
|
||
3) 监听器接口: IHttpServerListener
|
||
2、新增 HTTP Agent 组件:
|
||
1) 组件类: CHttpAgent、CHttpsAgent
|
||
2) 实现接口: ITcpAgent / IComplexHttpRequester
|
||
3) 监听器接口: IHttpAgentListener
|
||
3、新增 HTTP Client 组件:
|
||
1) 组件类: CHttpClient、CHttpsClient
|
||
2) 实现接口: ITcpClient / IHttpRequester
|
||
3) 监听器接口: IHttpClientListener
|
||
4、新增 HTTP 示例 Demo:
|
||
1) TestEcho-Http (源代码)
|
||
2) TestEcho-Http-4C (4C LIB / 4C DLL)
|
||
5、Http 监听器:
|
||
1) 监听器事件:
|
||
OnMessageBegin() : 【可选】开始解析
|
||
OnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)
|
||
OnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)
|
||
OnHeader() : 【可选】请求头通知
|
||
OnHeadersComplete() : 【必须】请求头完成通知
|
||
OnBody() : 【必须】请求体报文通知
|
||
OnChunkHeader() : 【可选】Chunked 报文头通知
|
||
OnChunkComplete() : 【可选】Chunked 报文结束通知
|
||
OnMessageComplete() : 【必须】完成解析通知
|
||
OnUpgrade() : 【可选】升级协议通知
|
||
OnParseError() : 【必须】解析错误通知
|
||
2) 监听器事件返回值(EnHttpParseResult):
|
||
HPR_OK : 继续解析
|
||
HPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)
|
||
HPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)
|
||
HPR_ERROR : 终止解析,断开连接
|
||
|
||
> 组件接口调整:
|
||
-----------------
|
||
1、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)
|
||
2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)
|
||
3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000
|
||
4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致
|
||
5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:
|
||
1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListener
|
||
2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListener
|
||
3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListener
|
||
6、SSL 组件支持 SNI:
|
||
1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数
|
||
2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能
|
||
2、更新所有 Demo 示例代码
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v4.0.1 与 HP-Socket v3.5.4 接口不兼容
|
||
2、IServer、IAgent 和 IClient 的所有监听器回调方法参数都有变化
|
||
3、注意:HPSocket4C 用新方法创建和销毁 PACK 组件监听器
|
||
4、注意:IServer 和 IAgent 应用程序需要根据实际使用场景设置最大连接数
|
||
|
||
==========================================================================================
|
||
v3.5.4 更新:
|
||
==========================================================================================
|
||
|
||
> Bug 修复:
|
||
-----------------
|
||
1、修复 IClient 组件在连接发送数据时连接被断开可能导致程序崩溃 Bug
|
||
2、优化 vc-common-src 公共代码包的 CCASQueue
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.5.4 完全兼容 HP-Socket v3.5.3 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.5.3 更新:
|
||
==========================================================================================
|
||
|
||
> Bug 修复:
|
||
-----------------
|
||
1、修复 IClient 组件在极端情况下触发两次 OnClose() 事件 Bug
|
||
2、修复 IClient 组件在极端情况下销毁 IClient 对象导致程序崩溃 Bug
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.5.3 完全兼容 HP-Socket v3.5.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.5.2 更新:
|
||
==========================================================================================
|
||
|
||
> 组件接口调整:
|
||
-----------------
|
||
1、IClient 组件 Start() 方法默认连接方式改为异步连接
|
||
2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址
|
||
3、HP-Socket 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址
|
||
4、IUdpCast 组件删除接口方法 Get/SetBindAddress()
|
||
5、IServer 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息
|
||
6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.5.2 完全兼容 HP-Socket v3.5.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.5.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加 SSL 系列通信组件:
|
||
-----------------
|
||
1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClient
|
||
2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClient
|
||
3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClient
|
||
4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口
|
||
5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数
|
||
6、通信结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境
|
||
7、新增 SSL 相关示例 Demo:
|
||
1) TestEcho-SSL (源代码)
|
||
2) TestEcho-SSL-Pack (DLL / 4C DLL)
|
||
3) TestEcho-SSL-4C (4C LIB)
|
||
4) TestEcho-SSL-PFM (LIB)
|
||
|
||
> 组件接口调整:
|
||
-----------------
|
||
1、ITcpServerListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)
|
||
2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)
|
||
3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)
|
||
4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READY
|
||
5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)
|
||
6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.h
|
||
7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.h
|
||
8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节
|
||
9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FF
|
||
|
||
> 增加静态库工程:
|
||
-----------------
|
||
1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库
|
||
2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)
|
||
3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIB
|
||
4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.5.1 的非 SSL 版本不能二进制兼容 HP-Socket v3.4.x 版本,升级需重新编译应用程序
|
||
2、TCP 组件接口增加了 OnHandShake() 事件,使用 C++ 接口的应用程序需要处理该事件,对于非 SSL 组件则可提供一个空实现
|
||
|
||
==========================================================================================
|
||
v3.4.3 更新:
|
||
==========================================================================================
|
||
|
||
> Bug 修复:
|
||
-----------------
|
||
1、修复 vc-common-src 公共代码包的 CCASQueue 可能导致无限循环 Bug
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.4.3 完全兼容 HP-Socket v3.4.2 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.4.2 更新:
|
||
==========================================================================================
|
||
|
||
> Bug 修复:
|
||
-----------------
|
||
1、修复 TcpPackServer 和 TcpPackAgent 某些属性设置不生效 Bug
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.4.2 完全兼容 HP-Socket v3.4.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.4.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加 Tcp Pack 系列通信组件:
|
||
-----------------
|
||
1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包
|
||
2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)
|
||
3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识
|
||
2、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口
|
||
|
||
> 组件接口调整:
|
||
-----------------
|
||
1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
|
||
2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作
|
||
3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()
|
||
4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.3.2 及之前版本升级到 HP-Socket v3.4.1 版本,需要修改 OnClose/OnError 事件的处理代码
|
||
|
||
==========================================================================================
|
||
v3.3.2 更新:
|
||
==========================================================================================
|
||
|
||
> 代码调整:
|
||
-----------------
|
||
1、增强编译兼容性
|
||
2、修复 C#、E 语言 SDK 的已知 Bug
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.3.2 完全兼容 HP-Socket v3.3.1 版本,可以直接替换升级
|
||
|
||
==========================================================================================
|
||
v3.3.1 更新:
|
||
==========================================================================================
|
||
|
||
> 组件接口调整:
|
||
-----------------
|
||
1、IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象
|
||
2、增加 IPullClient 接口,用作 PULL Client 组件的基接口
|
||
3、IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)
|
||
4、增加 IComplexSocketListener 监听器接口,用作 Server/Agent 组件的监听器基接口
|
||
5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Server/Agent 组件原来的 OnServerShutdown/OnAgentShutdown
|
||
6、IClient 组件增加 Get/SetExtra() 方法用于保存自定义附加数据
|
||
7、IServer 和 IAgent 组件增加“静默连接处理”相关方法:
|
||
1) DisconnectSilenceConnections():断开超过指定时长的静默连接
|
||
2) GetSilencePeriod():获取某个连接静默时间(毫秒)
|
||
3) SetMarkSilence():设置是否标记静默时间(设置为 TRUE 时 DisconnectSilenceConnections() 和 GetSilencePeriod() 才有效,默认:FALSE)
|
||
4) IsMarkSilence():检测是否标记静默时间
|
||
|
||
> 增加 UdpCast 通信组件:
|
||
-----------------
|
||
1、UdpClient / UdpServer 用于 C/S 模式的点对点单播通信,但在某些应用场景下,需要用到组播或广播通信
|
||
2、UdpCast 实现了组播或广播通信,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法:
|
||
|
||
1) 通知接口方法:
|
||
OnPrepareConnect(IClient* pClient, SOCKET socket)
|
||
OnConnect(IClient* pClient)
|
||
OnSend(IClient* pClient, const BYTE* pData, int iLength)
|
||
OnReceive(IClient* pClient, const BYTE* pData, int iLength)
|
||
OnClose(IClient* pClient)
|
||
OnError(IClient* pClient, EnSocketOperation enOperation, int iErrorCode)
|
||
|
||
2) 主要操作方法:
|
||
Start(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE /*该参数被忽略*/)
|
||
Stop()
|
||
Connect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)
|
||
Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)
|
||
SendPackets(const WSABUF pBuffers[], int iCount)
|
||
|
||
3、增加 UdpCast 使用示例:TestUDPCast
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.3.1 在功能上兼容 HP-Socket v3.2.3 版本,但代码级别不完全兼容
|
||
2、HP-Socket v3.2.3 升级到 HP-Socket v3.3.1 需要注意以下调整:
|
||
|
||
1) Client 组件
|
||
a) IClientListener 监听器接口调整,所有通知方法的参数有调整
|
||
b) PULL Client 用 IPullClient 作为基接口,Fetch()/Peek()方法参数有调整
|
||
2) Agent/Server 组件
|
||
a) OnShutdown 取代 OnServerShutdown/OnAgentShutdown
|
||
|
||
==========================================================================================
|
||
v3.2.3 更新:
|
||
==========================================================================================
|
||
|
||
> common-src 优化:
|
||
-----------------
|
||
1、优化通信组件的同步机制
|
||
2、整体性能提升约 10%
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.2.2 及以前版本的应用程序可以安全升级到 HP-Socket v3.2.3
|
||
|
||
==========================================================================================
|
||
v3.2.2 更新:
|
||
==========================================================================================
|
||
|
||
> 增加若干帮助方法:
|
||
-----------------
|
||
1、批量发送方法 SendPackets()
|
||
1) IClient / IServer / IAgent 增加批量发送方法 SendPackets(dwConnID, pBuffers[], iBufferCount)
|
||
2) 对于 TCP 组件 - 顺序发送所有数据包
|
||
3) 对于 UDP 组件 - 把所有数据包组合成一个数据包发送(数据包的总长度不能大于设置的 UDP 包最大长度)
|
||
2、小文件发送方法 SendSmallFile()
|
||
1) ITcpClient / ITcpServer / ITcpAgent 增加小文件发送方法 SendSmallFile(dwConnID, lpszFileName, pHead, pTail)
|
||
2) 通过 pHead 和 pTail 参数,可以分别在文件数据的头部和尾部加入自定义数据
|
||
3) SendSmallFile() 只能发送 4096 KB 以内大小的文件
|
||
3、HPSocket.dll 和 HPSocket4C.dll 增加以下导出方法
|
||
1) SYS_WSAGetLastError():调用系统的 WSAGetLastError()
|
||
2) SYS_SetSocketOption():调用系统的 setsockopt()
|
||
3) SYS_GetSocketOption():调用系统的 getsockopt()
|
||
4) SYS_IoctlSocket() :调用系统的 ioctlsocket()
|
||
5) SYS_WSAIoctl() :调用系统的 WSAIoctl()
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.2.1 及以前版本的应用程序可以安全升级到 HP-Socket v3.2.2
|
||
|
||
==========================================================================================
|
||
v3.2.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加 TcpAgent / TcpPullAgent 通信组件:
|
||
-----------------
|
||
1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接
|
||
2、TcpClient / TcpPullClient 基于 Event Select 通信模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景
|
||
3、TcpAgent / TcpPullAgent 基于 IOCP 通信模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端通信组件
|
||
4、TcpAgent / TcpPullAgent 的使用方式依然简单,提供以下接口方法:
|
||
|
||
1) 通知接口方法:
|
||
OnPrepareConnect(CONNID dwConnID, SOCKET socket)
|
||
OnConnect(CONNID dwConnID)
|
||
OnSend(CONNID dwConnID, const BYTE* pData, int iLength)
|
||
OnReceive(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)
|
||
OnReceive(CONNID dwConnID, int iLength) //(Pull 模型)
|
||
OnClose(CONNID dwConnID)
|
||
OnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
|
||
OnAgentShutdown()
|
||
|
||
2) 主要操作方法:
|
||
Start(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)
|
||
Stop()
|
||
Connect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)
|
||
Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)
|
||
Disconnect(CONNID dwConnID, BOOL bForce = TRUE)
|
||
Fetch(CONNID dwConnID, BYTE* pData, int iLength) //(Pull 模型)
|
||
|
||
5、增加 TcpAgent / TcpPullAgent 使用示例:
|
||
1) Agent-PFM
|
||
2) Agent-Pull
|
||
3) Agent-4C
|
||
|
||
6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxy
|
||
|
||
> 增加 HPSocket for Java SDK:
|
||
-----------------
|
||
1、提供 Java 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只支持 Windows 平台)
|
||
2、运行环境:JDK 1.6+,JVM 运行在 server 模式("java -server",在 client 模式下性能受影响)
|
||
3、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)
|
||
4、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicode
|
||
5、HPSocket for Java SDK 提供以下通信组件:
|
||
|
||
1) TcpServer:TCP 通信服务端组件,支持 PUSH/PULL 模型
|
||
2) TcpClient:TCP 通信客户端组件,支持 PUSH/PULL 模型
|
||
3) TcpAgent :TCP 通信 Agent 组件,支持 PUSH/PULL 模型
|
||
4) UdpServer:UDP 通信服务端组件,支持 PUSH 模型
|
||
5) UdpClient:UDP 通信客户端组件,支持 PUSH 模型
|
||
|
||
6、HPSocket4J 的使用方法(以 TcpAgent 为例):
|
||
|
||
/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */
|
||
|
||
/* 1: 创建通信组件对象 */
|
||
TcpAgent agent = TcpAgent.create(Mode.PUSH);
|
||
|
||
/* 2: 设置回调函数对象 */
|
||
// (可选)
|
||
agent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());
|
||
// (可选)
|
||
agent.setCallBackOnConnect(new OnConnectImpl());
|
||
// (必须)PUSH 模型需要设置 OnReceive 回调函数对象
|
||
agent.setCallBackOnReceive(new OnReceiveImpl());
|
||
// (必须)PULL 模型需要设置 OnPullReceive 回调函数对象
|
||
// agent.setCallBackOnPullReceive(new OnPullReceiveImpl());
|
||
// (可选)
|
||
agent.setCallBackOnSend(new OnSendImpl());
|
||
// (必须)
|
||
agent.setCallBackOnClose(new OnCloseImpl());
|
||
// (必须)
|
||
agent.setCallBackOnError(new OnErrorImpl());
|
||
// (可选)
|
||
agent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());
|
||
|
||
/* 3:启动通信组件 */
|
||
agent.start("127.0.0.1", false);
|
||
|
||
/* 4:连接服务器 */
|
||
agent.connect("localhost", (short)5555, pdwConnID);
|
||
|
||
/* 5:处理通信数据 */
|
||
// 响应 OnReceive / OnPullReceive 事件接收数据
|
||
// 使用 agent.send(dwConnID, data, data.length) 发送数据
|
||
|
||
/* 6:关闭通信组件 */
|
||
agent.stop();
|
||
|
||
/* 7:销毁通信组件 */
|
||
TcpAgent.destroy(agent);
|
||
|
||
> 优化数据发送/接收策略:
|
||
-----------------
|
||
1、Server 和 Agent 组件提供以下三种数据发送策略:
|
||
1)PACK - 打包模式(默认) :尽量把多个发送操作的数据组合在一起发送,增加传输效率
|
||
2)SAFE - 安全模式 :尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出
|
||
3)DIRECT - 直接模式 :对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合
|
||
2、Server 和 Agent 组件提供以下两种数据接收策略:
|
||
1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnReceive 和 OnClose/OnError 事件
|
||
2)PARALLEL - 并行模式 :在不同的通信线程中同时触发同一连接的 OnReceive 和 OnClose/OnError 事件
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、IServer 的 GetClientAddress() 方法改名为 GetRemoteAddress()
|
||
2、IClient 的 Send() 方法删除 “CONNID dwConnID” 参数
|
||
3、IClient/IServer/IAgent 的 Send() 方法增加发送数据缓冲区指针偏移量参数 “int iOffset”
|
||
4、增加 EnSendPolicy 枚举类型,IServer/IAgent 增加发送模式设置方法 SetSendPolicy()
|
||
5、增加 EnRecvPolicy 枚举类型,IServer/IAgent 增加接收模式设置方法 SetRecvPolicy()
|
||
6、IServer/IAgent 增加方法:BOOL GetAllConnectionIDs(),获取所有连接的 CONNID
|
||
7、IUdpServer 增加方法:SetPostReceiveCount(),设置 Receive 预投递数量
|
||
8、EnServerError / EnClientError 枚举类型合并为 EnSocketError
|
||
9、EnSocketError / EnHandleResult / EnFetchResult 枚举类型从原所在类中移到外部
|
||
10、IClient/IServer/IAgent 增加方法:BOOL GetPendingDataLength(),获取连接中未发出数据的长度
|
||
11、HPSocket4C.dll 增加方法 SendPart(),支持指定缓冲区指针偏移量
|
||
12、增加 HPSocket for C# SDK(由 int 2e 提供)
|
||
13、增加 HPSocket 易语言支持库(由 Yecate 提供)
|
||
14、公共代码包 vc-common-src 更新为 v2.3.5(参考:vc-common-src v2.3.5 的 Change Log)
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、HP-Socket v3.2.1 在功能上兼容 HP-Socket v3.1.3 及以前版本
|
||
2、接口有变化,需要根据提示修改程序代码;注意:现有程序不能直接替换 v3.1.3 的 DLL
|
||
3、EnServerError / EnClientError 枚举类型合并为 EnSocketError,注意一些枚举值发生了变化
|
||
|
||
==========================================================================================
|
||
v3.1.3 更新:
|
||
==========================================================================================
|
||
|
||
> 增加其它语言 Demo:
|
||
-----------------
|
||
1、C#
|
||
2、Delphi
|
||
3、E 语言
|
||
|
||
> Bug Fix:
|
||
-----------------
|
||
1、修复 IP 地址判断错误 Bug:
|
||
1) 客户端组件连接服务器时,如果服务器 IP 地址满位(12个数字:‘AAA.BBB.CCC.DDD’)则被错误地判断为域名
|
||
2) 影响组件:所有 TCP/UDP 客户端组件
|
||
3) 影响版本:v3.1.2 及之前所有版本
|
||
|
||
2、修复域名或主机名的 IP 地址解析错误 Bug:
|
||
1) 客户端组件通过域名或主机名连接服务器时,可能会解析到错误的 IP 地址
|
||
2) 影响组件:所有 TCP/UDP 客户端组件
|
||
3) 影响版本:v3.1.2 及之前所有版本
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.1.2 及以前版本的应用程序可以安全升级到 HP-Socket v3.1.3
|
||
|
||
==========================================================================================
|
||
v3.1.2 更新:
|
||
==========================================================================================
|
||
|
||
> 修改 Server 组件的 OnClose() / OnError() 事件的触发规则:
|
||
-----------------
|
||
1、以前版本的 TCP/UDP Server 组件中,当关闭一个连接时可能会同时触发一个 OnClose() 事件和若干个 OnError() 事件
|
||
2. 由于存在上述可能性,所以应用程序需要对 OnClose() / OnError() 的处理事件代码段进行同步
|
||
3、从 v3.1.2 开始,当多个 OnClose() / OnError() 事件同时发生时,组件只会向应用程序通知第一个事件,后续事件则忽略
|
||
4. 因此,应用程序在处理 OnClose() / OnError() 事件时不必处理同步,减少了出错的可能和编写同步及检测代码的负担
|
||
|
||
示例代码一:
|
||
--------------------------------------------------------------------------------------
|
||
ISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)
|
||
{
|
||
// 以前版本:有可能存在并发的 OnClose()/OnError(),要把代码放在临界区中并检测返回值
|
||
|
||
CCriSecLock locallock(m_csPkgInfo); // <-- 临界区
|
||
|
||
PVOID pInfo = nullptr;
|
||
|
||
if(m_Server->GetConnectionExtra(dwConnID, &pInfo) && pInfo != nullptr) // <-- 检测返回值
|
||
{
|
||
m_Server->SetConnectionExtra(dwConnID, nullptr);
|
||
delete pInfo;
|
||
}
|
||
}
|
||
|
||
示例代码二:
|
||
--------------------------------------------------------------------------------------
|
||
ISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)
|
||
{
|
||
// v3.1.2 版本:只会接收到一个 OnClose()/OnError() 事件,能安全地移除临界区代码和检测代码
|
||
|
||
PVOID pInfo = nullptr;
|
||
m_Server->GetConnectionExtra(dwConnID, &pInfo);
|
||
ASSERT(pInfo != nullptr);
|
||
|
||
delete pInfo;
|
||
}
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、调整 TCP Server 默认参数:
|
||
1) DEFAULT_SOCKET_LISTEN_QUEUE : 300
|
||
2) DEFAULT_ACCEPT_SOCKET_COUNT : 300
|
||
3) DEFAULT_FREE_SOCKETOBJ_POOL : 150
|
||
4) DEFAULT_FREE_SOCKETOBJ_HOLD : 450
|
||
5) DEFAULT_FREE_BUFFEROBJ_POOL : 300
|
||
6) DEFAULT_FREE_BUFFEROBJ_HOLD : 900
|
||
|
||
2、调整 UDP Server 默认参数:
|
||
1) DEFAULT_FREE_SOCKETOBJ_POOL : 150
|
||
2) DEFAULT_FREE_SOCKETOBJ_HOLD : 450
|
||
3) DEFAULT_FREE_BUFFEROBJ_POOL : 300
|
||
4) DEFAULT_FREE_BUFFEROBJ_HOLD : 900
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.1.1 及以前版本的应用程序可以安全升级到 HP-Socket v3.1.2
|
||
|
||
==========================================================================================
|
||
v3.1.1 更新:
|
||
==========================================================================================
|
||
|
||
> 增加导出纯 C 函数的动态链接库 HPSocket4C.dll:
|
||
-----------------
|
||
1、增加代码文件 HPSocket4C.h 和 HPSocket4C.cpp,用于创建 HPSocket4C.dll
|
||
2、导出纯 C 函数,让其它语言(如:C/C#/Delphi 等)能方便地使用 HPSocket
|
||
3、HPSocket4C.dll 使用方法
|
||
|
||
方法一:
|
||
--------------------------------------------------------------------------------------
|
||
(0) (C/C++ 程序)包含 HPSocket4C.h 头文件
|
||
(1) 调用 ::Create_HP_XxxListener() 函数创建监听器对象
|
||
(2) 调用 ::Create_HP_Xxx(pListener) 函数创建 HPSocket 对象
|
||
(3) 调用 ::HP_Set_FN_Xxx_OnYyy(pListener, ...) 函数设置监听器的回调函数
|
||
(4) 调用相关导出函数操作 HPSocket 对象
|
||
(5) ...... ......
|
||
(6) 调用 ::Destroy_HP_Xxx(pSocket) 函数销毁 HPSocket 对象
|
||
(7) 调用 ::Destroy_HP_XxxListener(pListener) 函数销毁监听器对象
|
||
|
||
方法二:
|
||
--------------------------------------------------------------------------------------
|
||
(1) 应用程序把需要用到的导出函数封装到特定语言的包装类中
|
||
(2) 通过包装类封装后,以面向对象的方式使用 HPSocket
|
||
|
||
4、HPSocket4C.dll 动态链接库发行版本
|
||
|
||
(1) x86/HPSocket4C.dll - (32位/MBCS/Release)
|
||
(2) x86/HPSocket4C_D.dll - (32位/MBCS/DeBug)
|
||
(3) x86/HPSocket4C_U.dll - (32位/UNICODE/Release)
|
||
(4) x86/HPSocket4C_UD.dll - (32位/UNICODE/DeBug)
|
||
(5) x64/HPSocket4C.dll - (64位/MBCS/Release)
|
||
(6) x64/HPSocket4C_D.dll - (64位/MBCS/DeBug)
|
||
(7) x64/HPSocket4C_U.dll - (64位/UNICODE/Release)
|
||
(8) x64/HPSocket4C_UD.dll - (64位/UNICODE/DeBug)
|
||
|
||
> 全面启用 Buffer Pool 缓存机制:
|
||
-----------------
|
||
1、Common/Src 增加代码文件 bufferpool.h 和 bufferpool.cpp,实现 Buffer Pool 缓存机制
|
||
2、通过 Buffer Pool 缓存机制提升内存使用效率,减少动态内存分配和释放操作,避免内存空洞
|
||
3、CTcpClient 用 CItemPool 和 TItemList 实现发送缓冲区
|
||
4、CUdpClient 用 CItemPool 和 TItemList 实现发送缓冲区
|
||
5、CTcpPullClient 用 CItemPool 和 TItemList 实现发送缓冲区和 PULL 缓冲区
|
||
6、CTcpPullServer 用 CBufferPool 和 TBuffer 实现 PULL 缓冲区
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、IServer 增加接口方法 DisconnectLongConnections() 用于断开所有超长连接
|
||
2、IServer 删除接口方法 GetConnectionCriSec()
|
||
3、IClient 增加方法 Get/SetFreeBufferPoolSize()、Get/SetFreeBufferPoolHold() 用于设置 Buffer Pool 缓存大小和阀值
|
||
4、IPullServer 删除方法 Get/SetFreePullBufferPool()、Get/SetFreePullBufferHold()
|
||
5、HPSocket.dll 和 HPSocket4C.dll 使用 /MT(d) 选项重新编译,消除对运行时库的依赖
|
||
6、增加示例工程 TestEcho-4C,展示 HPSocket4C.dll 的使用方法
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.0.2 及以前版本的应用程序可以安全升级到 HP-Socket v3.1.1
|
||
2、如果工程想通过导入 HPSocket4C.dll 的方式使用 HP-Socket,请参考 TestEcho-4C 示例工程
|
||
|
||
==========================================================================================
|
||
v3.0.2 更新:
|
||
==========================================================================================
|
||
|
||
> 把 HP-Socket 编译为动态链接库:
|
||
-----------------
|
||
1、应用程序可以通过导入源代码或动态链接库方式使用 HP-Socket
|
||
2、动态链接库使用方法
|
||
|
||
方法一:
|
||
-----------------------------------------------------------------------
|
||
(0) 应用程序包含 SocketInterface.h 和 HPSocket.h 头文件
|
||
(1) 调用 HP_Create_Xxx() 函数创建 HPSocket 对象
|
||
(2) 使用完毕后调用 HP_Destroy_Xxx() 函数销毁 HPSocket 对象
|
||
|
||
方法二:
|
||
-----------------------------------------------------------------------
|
||
(0) 应用程序包含 SocketInterface.h 和 HPSocket.h 头文件
|
||
(1) 创建 CXxxWrapper 包装器,通过包装器智能指针使用 HPSocket 对象
|
||
|
||
3、动态链接库发行版本
|
||
|
||
(1) x86/HPSocket.dll - (32位/MBCS/Release)
|
||
(2) x86/HPSocket_D.dll - (32位/MBCS/DeBug)
|
||
(3) x86/HPSocket_U.dll - (32位/UNICODE/Release)
|
||
(4) x86/HPSocket_UD.dll - (32位/UNICODE/DeBug)
|
||
(5) x64/HPSocket.dll - (64位/MBCS/Release)
|
||
(6) x64/HPSocket_D.dll - (64位/MBCS/DeBug)
|
||
(7) x64/HPSocket_U.dll - (64位/UNICODE/Release)
|
||
(8) x64/HPSocket_UD.dll - (64位/UNICODE/DeBug)
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、把组件接口以及监听器接口的声明移到 SocketInterface.h
|
||
2、IServer 增加接口方法 GetConnectionCount()/GetConnectPeriod() 分别获取当前连接数和某个连接的时长
|
||
3、IServer 接口方法 GetListenAddress()/GetClientAddress() 的 CString& 参数改为 LPTSTR
|
||
4、IClient 接口方法 GetLocalAddress() 的 CString& 参数改为 LPTSTR
|
||
5、SocketHelper.h 中所有全局函数的 CString& 参数均改为 LPTSTR
|
||
6、示例工程 TestEcho-Pull 和 TestEcho-PFM 改为用动态链接库方式使用 HP-Socket
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v3.0.1 的应用程序可以安全升级到 HP-Socket v3.0.2
|
||
2、由于某些接口方法的参数作了调整,因此请参考测试工程作相应修改
|
||
3、如果工程想通过动态链接库方式使用 HP-Socket,请参考 TestEcho-Pull 或 TestEcho-PFM 示例工程
|
||
|
||
==========================================================================================
|
||
v3.0.1 更新:
|
||
==========================================================================================
|
||
|
||
> 新增 UDP 通信组件:
|
||
-----------------
|
||
1、新增两个 UDP 通信组件:CUdpServer 为服务端组件,CUdpClient 为客户端组件
|
||
2、服务端组件 CUdpServer 采用 IOCP 通信模型
|
||
3、客户端组件 CUdpClient 采用 Event Select 通信模型
|
||
4、UDP 通信组件的接口与原 TCP 通信组件一致,简单实用
|
||
5、UDP 通信组件内置通信线路自动监测机制
|
||
6、新增 UDP 通信组件示例工程 TestEcho-UDP
|
||
|
||
> 代码重构与优化:
|
||
-----------------
|
||
1、规范所有接口、类以及代码文件的命名
|
||
2、重构和优化了大量组件代码
|
||
3、服务端组件加入读写锁机制,有效平衡处理性能与安全性
|
||
4、服务端组件的 Socket 对象缓存列表设置了锁定时间,提高访问的安全性
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v2.2.3 的应用程序可以安全升级到 HP-Socket v3.0.1
|
||
2、由于重命名了大量接口、类以及代码文件,因此升级时需要作相应调整
|
||
|
||
==========================================================================================
|
||
v2.2.3 更新:
|
||
==========================================================================================
|
||
|
||
> 连接 ID 的数据类型改为‘CONNID’:
|
||
-----------------
|
||
1、在SocketHelper.h 中定义 CONNID 数据类型(默认:typedef ULONG_PTR CONNID)
|
||
2、应用程序可以把 CONNID 定义为其希望的类型(如:ULONG / ULONGLONG 等)
|
||
3、为了便于移植与维护,应用程序的任何地方都应该用‘CONNID’类型引用连接 ID
|
||
|
||
> 服务端 Socket 组件支持为每个连接绑定附加数据:
|
||
-----------------
|
||
1、IServerSocket 和 CIocpServer 增加方法 Get/SetConnectionExtra()
|
||
2、通过上述两个方法,应用程序可以为每个连接绑定任意附加数据并把数据获取出来
|
||
|
||
> 其它更新:
|
||
-----------------
|
||
1、放宽 CIocpServer 的最大 IOCP 工作线程数目限制(64 改为 500)
|
||
2、服务端 Socket 组件的 Disconnect() 方法增加一个标识参数‘bForce’,指示是否强制断开连接
|
||
3、调整连接 ID 的生成规则,避免生成数值为 0 的连接 ID
|
||
|
||
==========================================================================================
|
||
v2.2.2 更新:
|
||
==========================================================================================
|
||
|
||
> 优化心跳检测相关功能:
|
||
-----------------
|
||
1、IServerSocket 和 IClientSocket 的 Get/SetKeepAliveTimes() 方法改为 Get/SetKeepAliveTime()
|
||
2、CIocpServer 和 CClientSocket 的默认 KeepAliveTime 属性改为 5000
|
||
3、CIocpServer 和 CClientSocket 的默认 KeepAliveInterval 属性改为 3000
|
||
|
||
==========================================================================================
|
||
v2.2.1 更新:
|
||
==========================================================================================
|
||
|
||
> PULL 模型支持:
|
||
-----------------
|
||
1、ISocketListener 增加 PULL 模型数据接收通知方法 OnReceive(dwConnID, int)
|
||
2、增加 PULL Socket 接口 IPullSocket,该接口的 Fetch(dwConnID, pBuffer, iLength) 方法用于抓取通信数据
|
||
|
||
> Server:
|
||
-----------------
|
||
1、服务端 Socket 接口 ISocketServer 改名为 IServerSocket
|
||
2、增加 PULL Server Socket 监听器抽象类 CPullServerSocketListener
|
||
3、增加 PULL Server Socket 接口 IPullServerSocket
|
||
4、增加 PULL Server Socket 实现类 CIocpPullServer
|
||
|
||
> Client:
|
||
-----------------
|
||
1、客户端 Socket 接口 ISocketClient 改名为 IClientSocket
|
||
2、客户端 Socket 实现类 CSocketClient 改名为 CClientSocket
|
||
3、增加 PULL Client Socket 监听器抽象类 CPullClientSocketListener
|
||
4、增加 PULL Client Socket 接口 IPullClientSocket
|
||
5、增加 PULL Client Socket 实现类 CPullClientSocket
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、增加 PULL Socket 测试程序 TestEcho-Pull
|
||
2、在 SocketHelper.h (.cpp) 中添加若干帮助结构体
|
||
|
||
> 升级说明:
|
||
-----------------
|
||
1、使用 HP-Socket v2.1.1 的应用程序可以安全升级到 v2.2.1
|
||
2、由于 ISocketServer、ISocketClient 和 CSocketClient 的名称已修改,因此,应用程序需要对引用的名称和包含的头文件名作相应修改
|
||
|
||
==========================================================================================
|
||
v2.1.1 更新:
|
||
==========================================================================================
|
||
|
||
> Server:
|
||
-----------------
|
||
1、IServerSocketListener 取消 OnPrepareSocket(connID, socket) 通知方法
|
||
2、IServerSocketListener 修改 OnAccept((connID, soClient) 通知方法,增加参数‘soClient’,用于实现原 OnPrepareSocket(connID, socket) 通知方法的功能
|
||
3、IServerSocketListener 增加 OnPrepareListen(soListen) 通知方法,用于设置监听 socket 的 SOCKET 选项
|
||
4、ISocketServer 增加方法 GetListenAddress(strAddress, usPort),用于获取监听 Socket 的地址信息
|
||
5、ISocketServer 增加方法 GetClientAddress(connID, strAddress, usPort),用于某个客户端连接的地址信息
|
||
6、优化 Socket 缓存池和内存块缓存池管理
|
||
7、调整一些属性访问方法的方法名
|
||
8、修复BUG:特殊情形下可能出现死锁现象
|
||
|
||
> Client:
|
||
-----------------
|
||
1、ISocketServer 增加方法 GetLocalAddress(strAddress, usPort),用于获取 Client Socket 的地址信息
|
||
2、优化数据发送方式,提升数据发送效率
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、优化 TestEcho 和 TestEcho-PFM 测试程序
|
||
3、在 SocketHelper.h (.cpp) 中添加若干帮助函数
|
||
4、为 SocketHelper.h 中定义的所有接口、类和方法加入注释
|
||
|
||
==========================================================================================
|
||
v2.0.1 更新:
|
||
==========================================================================================
|
||
|
||
> Server:
|
||
-----------------
|
||
1、IServerSocketListener 增加 OnPrepareSocket(connID, socket) 通知方法用于在使用 socket 前设置 SOCKET 选项或过滤客户端连接
|
||
2、ISocketServer 增加方法 Disconnect(connID) 用于主动断开客户端连接
|
||
3、增加 IServerSocketListener 的子类 CServerSocketListener,提供默认(空的)通知处理方法
|
||
|
||
> Client:
|
||
-----------------
|
||
1、IClientSocketListener 增加 OnPrepareSocket(connID, socket) 通知方法用于在使用 socket 前设置 SOCKET 选项
|
||
2、支持异步 Connect:ISocketServer 的 Start() 方法增加一个参数 (BOOL bAsyncConnect) 设置是否采用异步 Connect
|
||
3、增加 IClientSocketListener 的子类 CClientSocketListener,提供默认(空的)通知处理方法。
|
||
4、修复BUG:超高负载情形下出现丢包现象
|
||
|
||
|
||
> 其他更新:
|
||
-----------------
|
||
1、支持 Windows x64 平台
|
||
2、优化 TestEcho 和 TestEcho-PFM 测试程序
|
||
3、TestEcho 客户端程序加入“异步连接”示例
|
||
4、TestEcho 服务端程序加入“连接过滤”和“主动断开连接”示例 |