高性能网络通信框架 HP-Socket v5.5.3,支持可靠 UDP [问题点数:300分]

Bbs1
本版专家分:55
结帖率 78.57%
Bbs10
本版专家分:139163
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2019年7月 总版技术专家分月排行榜第二
2019年5月 总版技术专家分月排行榜第二
Blank
铜牌 2019年8月 总版技术专家分月排行榜第三
2019年4月 总版技术专家分月排行榜第三
2019年3月 总版技术专家分月排行榜第三
Blank
红花 2019年8月 VC/MFC大版内专家分月排行榜第一
2019年7月 VC/MFC大版内专家分月排行榜第一
2019年6月 VC/MFC大版内专家分月排行榜第一
2019年5月 VC/MFC大版内专家分月排行榜第一
2019年4月 VC/MFC大版内专家分月排行榜第一
2019年3月 VC/MFC大版内专家分月排行榜第一
2019年1月 VC/MFC大版内专家分月排行榜第一
2018年12月 VC/MFC大版内专家分月排行榜第一
2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
Bbs9
本版专家分:56076
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs2
本版专家分:340
Bbs9
本版专家分:87215
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs1
本版专家分:55
Bbs3
本版专家分:690
Bbs5
本版专家分:2983
Bbs7
本版专家分:26030
Bbs5
本版专家分:4428
Bbs7
本版专家分:17085
Bbs6
本版专家分:6823
Bbs1
本版专家分:55
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2 发布
  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供
5.4节呈献:HP-Socket v5.3.1 发布,支持 Android NDK
项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : http://www.docin.com/p-2079016612.html 下载地址 : http
高性能 TCP & UDP 通信框架 HP-Socket v4.1.3
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client <em>通信</em>组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP <em>通信</em>,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、采用新环形缓冲区算法提高异步操作安全性rn 2、采用延时释放策略提高 HTTP 异步操作安全性rn 3、IClient 组件优化,提高稳定性rn 4、修正 ITcpSer<em>v</em>er 和 ITcpAgent 组件的 Onclose 事件在 SP_DIRECT 发送模式下的触发规则rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列<em>通信</em>组件:[/i][/b]rn----------------- rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Ser<em>v</em>er 组件:rn 1) 组件类: CHttpSer<em>v</em>er、CHttpsSer<em>v</em>errn 2) 实现接口: ITcpSer<em>v</em>er / IComplexHttpResponderrn 3) 监听器接口: IHttpSer<em>v</em>erListenerrn 2、新增 HTTP Agent 组件:rn 1) 组件类: CHttpAgent、CHttpsAgentrn 2) 实现接口: ITcpAgent / IComplexHttpRequesterrn 3) 监听器接口: IHttpAgentListenerrn 3、新增 HTTP Client 组件:rn 1) 组件类: CHttpClient、CHttpsClientrn 2) 实现接口: ITcpClient / IHttpRequesterrn 3) 监听器接口: IHttpClientListenerrn 4、新增 HTTP 示例 Demo:rn 1) TestEcho-Http (源代码)rn 2) TestEcho-Http-4C (4C LIB / 4C DLL)rn 5、Http 监听器:rn 1) 监听器事件:[code=text]OnMessageBegin() : 【可选】开始解析rnOnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)rnOnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)rnOnHeader() : 【可选】请求头通知rnOnHeadersComplete() : 【必须】请求头完成通知rnOnBody() : 【必须】请求体报文通知rnOnChunkHeader() : 【可选】Chunked 报文头通知rnOnChunkComplete() : 【可选】Chunked 报文结束通知rnOnMessageComplete() : 【必须】完成解析通知rnOnUpgrade() : 【可选】升级协议通知rnOnParseError() : 【必须】解析错误通知[/code] 2) 监听器事件返回值(EnHttpParseResult):rn[code=text]HPR_OK : 继续解析rnHPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)rnHPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)rnHPR_ERROR : 终止解析,断开连接[/code][b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、ISer<em>v</em>er 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackSer<em>v</em>erListener / Destroy_HP_TcpPackSer<em>v</em>erListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddSer<em>v</em>erContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.4 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.4 更新 ***[/color][/size][/b]rn rn[b][i]> Bug 修复:[/i][/b]rn-----------------rn 1、修复 IClient 组件在连接发送数据时连接被断开可能导致程序崩溃 Bugrn 2、优化 <em>v</em>c-common-src 公共代码包的 CCASQueuern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.3 更新 ***[/color][/size][/b]rn rn[b][i]> Bug 修复:[/i][/b]rn-----------------rn 1、修复 IClient 组件在极端情况下触发两次 OnClose() 事件 Bugrn 2、修复 IClient 组件在极端情况下销毁 IClient 对象导致程序崩溃 Bugrn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、<em>HP-Socket</em> 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、ISer<em>v</em>er 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v4.2.1
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client <em>通信</em>组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有<em>通信</em>事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 <em>v</em>c-common-src 版本升级到 <em>v</em>2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client <em>通信</em>组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP <em>通信</em>,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列<em>通信</em>组件:[/i][/b]rn----------------- rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Ser<em>v</em>er 组件:rn 1) 组件类: CHttpSer<em>v</em>er、CHttpsSer<em>v</em>errn 2) 实现接口: ITcpSer<em>v</em>er / IComplexHttpResponderrn 3) 监听器接口: IHttpSer<em>v</em>erListenerrn 2、新增 HTTP Agent 组件:rn 1) 组件类: CHttpAgent、CHttpsAgentrn 2) 实现接口: ITcpAgent / IComplexHttpRequesterrn 3) 监听器接口: IHttpAgentListenerrn 3、新增 HTTP Client 组件:rn 1) 组件类: CHttpClient、CHttpsClientrn 2) 实现接口: ITcpClient / IHttpRequesterrn 3) 监听器接口: IHttpClientListenerrn 4、新增 HTTP 示例 Demo:rn 1) TestEcho-Http (源代码)rn 2) TestEcho-Http-4C (4C LIB / 4C DLL)rn 5、Http 监听器:rn 1) 监听器事件:[code=text]OnMessageBegin() : 【可选】开始解析rnOnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)rnOnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)rnOnHeader() : 【可选】请求头通知rnOnHeadersComplete() : 【必须】请求头完成通知rnOnBody() : 【必须】请求体报文通知rnOnChunkHeader() : 【可选】Chunked 报文头通知rnOnChunkComplete() : 【可选】Chunked 报文结束通知rnOnMessageComplete() : 【必须】完成解析通知rnOnUpgrade() : 【可选】升级协议通知rnOnParseError() : 【必须】解析错误通知[/code] 2) 监听器事件返回值(EnHttpParseResult):rn[code=text]HPR_OK : 继续解析rnHPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)rnHPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)rnHPR_ERROR : 终止解析,断开连接[/code][b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、ISer<em>v</em>er 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackSer<em>v</em>erListener / Destroy_HP_TcpPackSer<em>v</em>erListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddSer<em>v</em>erContext(),用于 加载 SNI 主机证书rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.2 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、<em>HP-Socket</em> 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、ISer<em>v</em>er 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v5.1.1 for Windows
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。[i][b]<em>HP-Socket</em> for Linux[/b][/i] 即将发布,敬请期待。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>5.1.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加暂停接收功能:[/i][/b]rn----------------- rn 1、所有 Ser<em>v</em>er/Agent/Client 组件增加‘暂停接收数据’功能(<em>UDP</em> Ser<em>v</em>er 组件除外)rn 2、API 更新:[code=c]1) HP_Ser<em>v</em>er_PauseRecei<em>v</em>e (增加)rn2) HP_Ser<em>v</em>er_IsPauseRecei<em>v</em>e (增加)rn3) HP_Agent_PauseRecei<em>v</em>e (增加)rn4) HP_Agent_IsPauseRecei<em>v</em>e (增加)rn5) HP_Client_PauseRecei<em>v</em>e (增加)rn6) HP_Client_IsPauseRecei<em>v</em>e (增加)[/code]rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、TCP Agent 增加方法 HP_Agent_ConnectWithExtra(),<em>支持</em>在连接完成前绑定附加数据rn 2、公共代码包 <em>v</em>c-common-src 版本升级到 <em>v</em>2.3.22rn 3、OpenSSL 版本升级到 1.1.0grn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>5.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> IP<em>v</em>6 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有<em>通信</em>组件<em>支持</em> IP<em>v</em>6rn 2、组件接口没有变化,组件内部通过传入的地址参数自动识别 IP<em>v</em>4 / IP<em>v</em>6rn 3、API 更新:[code=c]1) enum En_HP_IPAddrType (增加)rn2) struct HP_TIPAddr (增加)rn3) SYS_GetIP<em>v</em>4InAddr (删除)rn4) SYS_GetOptimalIPByHostName (删除)rn5) SYS_IsIPAddress (修改)rn6) SYS_GetIPAddress (修改)rn7) SYS_EnumHostIPAddresses (增加)rn8) SYS_FreeHostIPAddresses (增加)[/code]rnrn[b][i]> SSL <em>通信</em>组件:[/i][/b]rn-----------------rn 1、多 SSL 证书<em>支持</em>,每个<em>通信</em>组件对象可以使用不同的 SSL 证书rn 2、<em>通信</em>组件对象绑定独立的 SSL Context,取代旧版本的全局唯一 SSL Contextrn 3、API 更新:[code=c]1) HP_SSL_Initialize (删除)rn2) HP_SSL_Cleanup (删除)rn3) HP_SSL_IsValid (删除)rn4) HP_SSLAgent_SetupSSLContext (增加)rn5) HP_SSLClient_SetupSSLContext (增加)rn6) HP_SSLSer<em>v</em>er_SetupSSLContext (增加)rn7) HP_SSLSer<em>v</em>er_AddSSLContext (增加)rn8) HP_SSLAgent_CleanupSSLContext (增加)rn9) HP_SSLClient_CleanupSSLContext (增加)rn10) HP_SSLSer<em>v</em>er_CleanupSSLContext (增加)[/code]rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client <em>通信</em>组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有<em>通信</em>事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 <em>v</em>c-common-src 版本升级到 <em>v</em>2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client <em>通信</em>组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP <em>通信</em>,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rn------------------------------------------------------------------------------------------------
HP-Socket学习02 Windows
GetVersionEx [GetVersionEx可能被修改或无法在windows8.1之后发布。相反,使用Version Helper函数] 随着Windows 8.1的发布,GetVersionEx API的行为在它将返回操作系统版本的值中发生了变化。GetVersionEx函数返回的值现在取决于应用程序的表示方式。 Windows 8.1或Windows 10中未显示的应用程序将返回W...
请问HP-Socket 新增的 PULL 模型在实际应用中有什么好处?
  <em>HP-Socket</em> <em>v</em>2.2 中新增了PULL模型<em>支持</em>,想请教下各位大虾:在实际应用中如何使用PULL模型,作者说PULL模型比PUSH模型简单,但看提供的Demo仿佛代码量更多了,到底简单在哪里
环境配置说明(HP-SOCKET网络通讯框架与C#系列之一)
HP-SOCKET<em>高性能网络</em><em>通信</em><em>框架</em>,我准备来一个系列介绍它在C#环境下的使用 项目主页:http://www.oschina.net/p/hp-socket 开发文档:http://www.docin.com/p-2079016612.html 下载地址:https://github.com/ldcsaa/<em>HP-Socket</em> QQ Group:7...
javascript 的socket 报出的“200”错误,怎么解决
-
高性能 TCP & UDP 通信框架 HP-Socket v4.3.1
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.3.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、IHttpClient 和 IHttpAgent 组件兼容没有长度标识(如:Content-Length Header)的 HTTP 响应报文rn 2、IHttpClient 和 IHttpAgent 组件改进 HEAD 请求的响应处理方式,应用程序无需在 OnHeadersComplete 事件中返回特殊值 HPR_SKIP_BODYrnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、公共代码包 <em>v</em>c-common-src 版本升级到 <em>v</em>2.3.19rn 2、OpenSSL 版本升级到 1.1.0frn 3、优化 ISer<em>v</em>er/IAgent 组件,提升性能和稳定性rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client <em>通信</em>组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有<em>通信</em>事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 <em>v</em>c-common-src 版本升级到 <em>v</em>2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client <em>通信</em>组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP <em>通信</em>,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列<em>通信</em>组件:[/i][/b]rn----------------- rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Ser<em>v</em>er 组件:rn 1) 组件类: CHttpSer<em>v</em>er、CHttpsSer<em>v</em>errn 2) 实现接口: ITcpSer<em>v</em>er / IComplexHttpResponderrn 3) 监听器接口: IHttpSer<em>v</em>erListenerrn 2、新增 HTTP Agent 组件:rn 1) 组件类: CHttpAgent、CHttpsAgentrn 2) 实现接口: ITcpAgent / IComplexHttpRequesterrn 3) 监听器接口: IHttpAgentListenerrn 3、新增 HTTP Client 组件:rn 1) 组件类: CHttpClient、CHttpsClientrn 2) 实现接口: ITcpClient / IHttpRequesterrn 3) 监听器接口: IHttpClientListenerrn 4、新增 HTTP 示例 Demo:rn 1) TestEcho-Http (源代码)rn 2) TestEcho-Http-4C (4C LIB / 4C DLL)rn 5、Http 监听器:rn 1) 监听器事件:[code=text]OnMessageBegin() : 【可选】开始解析rnOnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)rnOnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)rnOnHeader() : 【可选】请求头通知rnOnHeadersComplete() : 【必须】请求头完成通知rnOnBody() : 【必须】请求体报文通知rnOnChunkHeader() : 【可选】Chunked 报文头通知rnOnChunkComplete() : 【可选】Chunked 报文结束通知rnOnMessageComplete() : 【必须】完成解析通知rnOnUpgrade() : 【可选】升级协议通知rnOnParseError() : 【必须】解析错误通知[/code] 2) 监听器事件返回值(EnHttpParseResult):rn[code=text]HPR_OK : 继续解析rnHPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)rnHPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)rnHPR_ERROR : 终止解析,断开连接[/code][b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、ISer<em>v</em>er 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackSer<em>v</em>erListener / Destroy_HP_TcpPackSer<em>v</em>erListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddSer<em>v</em>erContext(),用于 加载 SNI 主机证书rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.3 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.3 更新 ***[/color][/size][/b]rn rn[b][i]> Bug 修复:[/i][/b]rn-----------------rn 1、修复 IClient 组件在极端情况下触发两次 OnClose() 事件 Bugrn 2、修复 IClient 组件在极端情况下销毁 IClient 对象导致程序崩溃 Bugrn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、<em>HP-Socket</em> 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、ISer<em>v</em>er 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能跨平台网络通信框架 HP-Socket v5.4.3
[url=http://www.oschina.net/p/hp-socket][img=https://img-bbs.csdn.net/upload/201812/06/1544062060_254694.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2154702652.html]http://www.docin.com/p-2154702652.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2154702652.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.4.3 更新[/b][/size]rnrn[size=16px][b] 一、HTTP 组件更新[/b][/size]rn 1. HTTP 组件可以手工启动 HTTP <em>通信</em>,从而可以对 HTTP <em>通信</em>执行 SOCKS 代理服务器设置等前置操作rn 2. HTTP 组件(Ser<em>v</em>er/Agent/Client)增加以下接口方法<em>支持</em>手工启动 HTTP <em>通信</em>rn[code=text]1) StartHttp():手工启动 HTTP <em>通信</em>,当<em>通信</em>组件设置为非自动启动时,需要调用本方法启动 HTTP <em>通信</em>rn2) SetHttpAutoStart():设置 HTTP <em>通信</em>启动方式(默认:TRUE,自动启动)rn3) IsHttpAutoStart():获取 HTTP <em>通信</em>启动方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. Bug 修复:<em>UDP</em> Ser<em>v</em>er 在高并发场景下可能重复触发 OnAccept 事件rnrn[size=24px][b]<em>v</em>5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https <em>通信</em>执行代理服务器设置等前置操作rn 2. SSL 组件(Ser<em>v</em>er/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当<em>通信</em>组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置<em>通信</em>组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取<em>通信</em>组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket <em>通信</em>线程中异步触发 OnClose 事件rn 2. Ser<em>v</em>er 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Ser<em>v</em>er 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnRecei<em>v</em>e(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]<em>v</em>5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/ISer<em>v</em>er 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]<em>v</em>5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 icon<em>v</em> 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-client
高性能跨平台网络通信框架 HP-Socket v5.4.4
[url=http://www.oschina.net/p/hp-socket][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2154702652.html]http://www.docin.com/p-2154702652.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2154702652.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.4.4 更新[/b][/size]rnrn[size=16px][b] 一、TCP 组件更新[/b][/size]rn 1. IAgent 组件<em>支持</em>在连接服务器时指定本地IP地址和(或)本地端口rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 代码优化rn 2. http-parser 解析器升级到 2.9.0 版本rn 3. OpenSSL 版本升级到 1.1.0j 版本rn 4. 提供 _<em>UDP</em>_DISABLED 预编译宏用于移除 <em>UDP</em> 组件rnrn[size=24px][b]<em>v</em>5.4.3 更新[/b][/size]rnrn[size=16px][b] 一、HTTP 组件更新[/b][/size]rn 1. HTTP 组件可以手工启动 HTTP <em>通信</em>,从而可以对 HTTP <em>通信</em>执行 SOCKS 代理服务器设置等前置操作rn 2. HTTP 组件(Ser<em>v</em>er/Agent/Client)增加以下接口方法<em>支持</em>手工启动 HTTP <em>通信</em>rn[code=text]1) StartHttp():手工启动 HTTP <em>通信</em>,当<em>通信</em>组件设置为非自动启动时,需要调用本方法启动 HTTP <em>通信</em>rn2) SetHttpAutoStart():设置 HTTP <em>通信</em>启动方式(默认:TRUE,自动启动)rn3) IsHttpAutoStart():获取 HTTP <em>通信</em>启动方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. Bug 修复:<em>UDP</em> Ser<em>v</em>er 在高并发场景下可能重复触发 OnAccept 事件rnrn[size=24px][b]<em>v</em>5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https <em>通信</em>执行代理服务器设置等前置操作rn 2. SSL 组件(Ser<em>v</em>er/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当<em>通信</em>组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置<em>通信</em>组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取<em>通信</em>组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket <em>通信</em>线程中异步触发 OnClose 事件rn 2. Ser<em>v</em>er 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Ser<em>v</em>er 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnRecei<em>v</em>e(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]<em>v</em>5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/ISer<em>v</em>er 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]<em>v</em>5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 icon<em>v</em> 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-client
高性能跨平台通信框架 HP-Socket v5.4.1
项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : http://www.docin.com/p-2129383071.html 下载地址 : https://github.com/ldcsaa/<em>HP-Socket</em> QQ Group: 75375912, 44636872     <em>HP-Socket</em>提供以下几类组件,详细内容请...
如何使用JAVA调用HP-Socket
有哪位朋友有使用<em>HP-Socket</em>吗 ? 该怎么调用
HP-Socket学习01 Windows
#pragma warning(push) #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。 #pragma warning(disable: n) 将某个警报置为失效 #pragma warning(default: n) 将报警置为默认 #pragma warning (...
HP-Socket_Windows
<em>HP-Socket</em>_Windows为Windows端示例程序,示例Demo包含服务端(TCPSer<em>v</em>er)、客户端(TCPClient),示例Demo简单地演示了在Windows下如何使用HP-Soc
HP Socket HttpServer使用
使用HP搭建Socket HttpSer<em>v</em>er,并且实现post,get,以及websocket,主要是webssockt折腾了不少时间。 首先要自己实现底层接口,都是纯虚函数,需要自己去实现,继承自IHttpSer<em>v</em>erListener #pragma once #include &quot;SocketInterface.h&quot; #include &quot;stdio.h&quot; #include&amp;lt;sys...
高性能跨平台网络通信框架 HP-Socket v5.4.1
[url=http://www.oschina.net/p/hp-socket][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2129383071.html]http://www.docin.com/p-2129383071.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2129383071.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/ISer<em>v</em>er 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]<em>v</em>5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 icon<em>v</em> 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-client
高性能跨平台网络通信框架 HP-Socket v5.4.2
[url=http://www.oschina.net/p/hp-socket][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2137713732.html]http://www.docin.com/p-2137713732.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2137713732.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https <em>通信</em>执行代理服务器设置等前置操作rn 2. SSL 组件(Ser<em>v</em>er/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当<em>通信</em>组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置<em>通信</em>组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取<em>通信</em>组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket <em>通信</em>线程中异步触发 OnClose 事件rn 2. Ser<em>v</em>er 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Ser<em>v</em>er 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnRecei<em>v</em>e(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]<em>v</em>5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/ISer<em>v</em>er 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]<em>v</em>5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 icon<em>v</em> 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-client
5.4节呈献:HP-Socket v5.3.1 发布 — 支持 Android NDK
项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : http://www.docin.com/p-2079016612.html 下载地址 : https://github.com/ldcsaa/<em>HP-Socket</em> QQ Group: 75375912, 44636872 <em>HP-Socket</em>提供以下几类组件,详细内容请参考《<em>HP-Socket</em>网...
高性能跨平台(Win&Linux;)网络通信框架 HP-Socket
高性能跨平台(Win&Linux;)网络<em>通信</em><em>框架</em> <em>HP-Socket</em> 没有最好只有更好, 非源代码,太大无法上传,有网址可自行下载完整包 。 <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 <em>HP-Socket</em> ,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前<em>支持</em> Windows 和 Linux 平台。 <em>HP-Socket</em> 的设计充分注重功能、通用型、易用性与伸缩性; <em>HP-Socket</em> 项目主页:http://www.oschina.net/p/hp-socket
高性能跨平台通信框架 HP-Socket v5.3.2
[url=http://www.oschina.net/p/hp-socket][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2079016612.html]http://www.docin.com/p-2079016612.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2079016612.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 icon<em>v</em> 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-client
我在学习HP Socket 代码的时候 看到一段代码 很纠结 请大牛解惑
struct info_msg { LPCTSTR name; CONNID connID; LPCTSTR e<em>v</em>t; int contentLength; LPCTSTR content; stat
高性能网络通信框架 HP-Socket
<em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 A...
hp-socket 记录
push 服务端主动发送数据给客户端.pull 客户端主动从服务器拉起数据,通常客户端会定时拉取。pack 自动分包包头格式:前10位为包头标识位,用于数据包效验.有效包头标识取值范围0-1024,当包头标识等于0时不效验包头.后22位为长度,记录包体长度,有效数据包最大长度不能超过4194303字节,默认长度限制为242144字节.应用程序可以通过SetPackHeaderFlag()和SetM...
hp-socket pack模式 拆包
-
HPSocket网站
1. https://www.oschina.net/p/hp-socket 2.https://github.com/ldcsaa/<em>HP-Socket</em>
高性能网络通信框架 HP-Socket v5.2.1 发布
[img=https://img-bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2079016612.html]http://www.docin.com/p-2079016612.html[/url]rn [b] 下载地址 :[/b] [url=https://github.com/ldcsaa/<em>HP-Socket</em>]https://github.com/ldcsaa/<em>HP-Socket</em>[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn <em>HP-Socket</em>提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2079016612.html]<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南[/url]》:rnrn [b]Ser<em>v</em>er:[/b]基于IOCP / EPOLL<em>通信</em>模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发<em>通信</em>场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Ser<em>v</em>er组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b] Client:[/b]基于E<em>v</em>ent Select / POLL<em>通信</em>模型,每个组件对象创建一个<em>通信</em>线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]<em>v</em>5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] SSL Ser<em>v</em>er, SSL Pull Ser<em>v</em>er, SSL Pack Ser<em>v</em>errn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450200_429283.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Ser<em>v</em>er:[/b] HTTP Ser<em>v</em>er, HTTPS Ser<em>v</em>errn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450465_284991.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo ser<em>v</em>er/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo ser<em>v</em>er/agent/clientrn 3.[b] testecho-ssl-pull:[/b] (SO) SSL pull echo ser<em>v</em>er/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo ser<em>v</em>er/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo ser<em>v</em>er/agent/client/sync-clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450514_831523.jpg][/img]rnrn[size=16px][b] 五、其它更新[/b][/size]rn 1. 代码优化和已知 Bug 修复
HP-Socket网络通信框架开发指南
经典socket开发<em>框架</em>
HP-Socket网络通信框架开发指南5.0版
<em>HP-Socket</em>网络<em>通信</em><em>框架</em>开发指南5.0版.详细的说明。。。
HP-Socket网络通信框架开发指南.zip
<em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、 客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP 通 信系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。 <em>HP-Socket</em> 对<em>通信</em>层完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思 想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.1.1 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client <em>通信</em>组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP <em>通信</em>,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列<em>通信</em>组件:[/i][/b]rn----------------- rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Ser<em>v</em>er 组件:rn 1) 组件类: CHttpSer<em>v</em>er、CHttpsSer<em>v</em>errn 2) 实现接口: ITcpSer<em>v</em>er / IComplexHttpResponderrn 3) 监听器接口: IHttpSer<em>v</em>erListenerrn 2、新增 HTTP Agent 组件:rn 1) 组件类: CHttpAgent、CHttpsAgentrn 2) 实现接口: ITcpAgent / IComplexHttpRequesterrn 3) 监听器接口: IHttpAgentListenerrn 3、新增 HTTP Client 组件:rn 1) 组件类: CHttpClient、CHttpsClientrn 2) 实现接口: ITcpClient / IHttpRequesterrn 3) 监听器接口: IHttpClientListenerrn 4、新增 HTTP 示例 Demo:rn 1) TestEcho-Http (源代码)rn 2) TestEcho-Http-4C (4C LIB / 4C DLL)rn 5、Http 监听器:rn 1) 监听器事件:[code=text]OnMessageBegin() : 【可选】开始解析rnOnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)rnOnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)rnOnHeader() : 【可选】请求头通知rnOnHeadersComplete() : 【必须】请求头完成通知rnOnBody() : 【必须】请求体报文通知rnOnChunkHeader() : 【可选】Chunked 报文头通知rnOnChunkComplete() : 【可选】Chunked 报文结束通知rnOnMessageComplete() : 【必须】完成解析通知rnOnUpgrade() : 【可选】升级协议通知rnOnParseError() : 【必须】解析错误通知[/code] 2) 监听器事件返回值(EnHttpParseResult):rn[code=text]HPR_OK : 继续解析rnHPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)rnHPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)rnHPR_ERROR : 终止解析,断开连接[/code][b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、ISer<em>v</em>er 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackSer<em>v</em>erListener / Destroy_HP_TcpPackSer<em>v</em>erListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddSer<em>v</em>erContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
C# Socket 移动端数据丢失?
-
JS Math.sin() 与 Math.cos() 用法
Math.sin(x)      x 的正玄值。返回值在 -1.0 到 1.0 之间; Math.cos(x)    x 的余弦值。返回的是 -1.0 到 1.0 之间的数; 这两个函数中的X 都是指的“弧度”而非“角度”,弧度的计算公式为: 2*PI/360*角度; 30° 角度 的弧度 = 2*PI/360*30   如何得到圆上每个点的坐标? 解决思路:根据三角形的正玄、余弦来
跨年呈献:HP-Socket for Linux 1.0 震撼发布
<em>HP-Socket</em>是一套通用的高性能TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/<em>UDP</em>/HTTP<em>通信</em>系统,提供C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python等编程语言接口。<em>HP-Socket</em>对<em>通信</em>层完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em>提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。<em>HP-Socket</em>目前<em>支持</em>Windows和Linux平台。
高性能 Socket 组件 HP-Socket v3.2.1-RC2 发布
  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> Socket 组件,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E、Ja<em>v</em>a 等编程语言开发接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,上层应用不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能...
高性能 TCP & UDP 通信框架 HP-Socket v3.3.2 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 下载地址:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   <em>HP-Socket</em> 作为底层的通用<em>框架</em>,性能是关键指标,绝对不能成为系统的瓶颈。<em>HP-Socket</em> 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.3.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象rn 2、增加 IPullClient 接口,用作 PULL Client 组件的基接口rn 3、IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)rn 4、增加 IComplexSocketListener 监听器接口,用作 Ser<em>v</em>er/Agent 组件的监听器基接口rn 5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Ser<em>v</em>er/Agent 组件原来的 OnSer<em>v</em>erShutdown/OnAgentShutdownrn 6、IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据rn 7、ISer<em>v</em>er 和 IAgent 组件增加“静默连接处理”相关方法:[code=c]rn1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 rn2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) rn3) SetMarkSilence():// 设置是否标记静默时间 rn4) IsMarkSilence():// 检测是否标记静默时间[/code][b][i]> 增加 UdpCast <em>通信</em>组件:[/i][/b]rn-----------------rn 1、UdpClient / UdpSer<em>v</em>er 用于 C/S 模式的点对点单播<em>通信</em>,但在某些应用场景下,需要用到组播或广播<em>通信</em>rn 2、UdpCast 实现了组播或广播<em>通信</em>,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法: [code=c]/* 1) 通知接口方法: */ rnOnPrepareConnect(IClient* pClient, SOCKET socket) rnOnConnect(IClient* pClient) rnOnSend(IClient* pClient, const BYTE* pData, int iLength) rnOnRecei<em>v</em>e(IClient* pClient, const BYTE* pData, int iLength) rnOnClose(IClient* pClient) rnOnError(IClient* pClient, EnSocketOperation enOperation, int iErrorCode) rn rn/* 2) 主要操作方法: */ rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE /*该参数被忽略*/) rnStop() rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr) rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0) rnSendPackets(const WSABUF pBuffers[], int iCount) [/code] 3、增加 UdpCast 使用示例:Test<em>UDP</em>Castrn[img=https://img-bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/ISer<em>v</em>er/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 <em>UDP</em> 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 <em>UDP</em> 包最大长度)rn[/code] 2、小文件发送方法 SendSmallFile() [code=text]rn1) TCP 组件增加方法 SendSmallFile(lpszFileName, pHead, pTail)rn2) 通过 pHead 和 pTail 参数,可以分别在文件数据的头部和尾部加入自定义数据rn3) SendSmallFile() 只能发送 4096 KB 以内大小的文件rn[/code] 3、HPSocket.dll 和 HPSocket4C.dll 增加以下导出方法[code=text]rn1) SYS_WSAGetLastError():调用系统的 WSAGetLastError()rn2) SYS_SetSocketOption():调用系统的 setsockopt()rn3) SYS_GetSocketOption():调用系统的 getsockopt()rn4) SYS_IoctlSocket() :调用系统的 ioctlsocket()rn5) SYS_WSAIoctl() :调用系统的 WSAIoctl()[/code]------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent <em>通信</em>组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 E<em>v</em>ent Select <em>通信</em>模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP <em>通信</em>模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端<em>通信</em>组件rn 4、TcpAgent / TcpPullAgent 的使用方式依然简单,提供以下接口方法:rn[code=c]rn/* 1) 通知接口方法:*/rnOnPrepareConnect(CONNID dwConnID, SOCKET socket)rnOnConnect(CONNID dwConnID)rnOnSend(CONNID dwConnID, const BYTE* pData, int iLength)rnOnRecei<em>v</em>e(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnRecei<em>v</em>e(CONNID dwConnID, int iLength) //(Pull 模型)rnOnClose(CONNID dwConnID)rnOnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rnOnAgentShutdown()rnrn/* 2) 主要操作方法:*/rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)rnStop()rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)rnDisconnect(CONNID dwConnID, BOOL bForce = TRUE)rnFetch(CONNID dwConnID, BYTE* pData, int iLength) //(Pull 模型)rn[/code] 5、增加 TcpAgent / TcpPullAgent 使用示例:rn * Agent-PFMrn * Agent-Pullrn * Agent-4Crn[img=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpSer<em>v</em>er 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://img-bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Ja<em>v</em>a SDK:[/i][/b]rn-----------------rn 1、提供 Ja<em>v</em>a 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只<em>支持</em> Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 ser<em>v</em>er 模式("ja<em>v</em>a -ser<em>v</em>er",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Ja<em>v</em>a SDK 提供以下<em>通信</em>组件:rn[code=text]rn1) TcpSer<em>v</em>er:TCP <em>通信</em>服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP <em>通信</em>客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP <em>通信</em> Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpSer<em>v</em>er:<em>UDP</em> <em>通信</em>服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:<em>UDP</em> <em>通信</em>客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建<em>通信</em>组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnRecei<em>v</em>e 回调函数对象rnagent.setCallBackOnRecei<em>v</em>e(new OnRecei<em>v</em>eImpl());rn// (必须)PULL 模型需要设置 OnPullRecei<em>v</em>e 回调函数对象rn// agent.setCallBackOnPullRecei<em>v</em>e(new OnPullRecei<em>v</em>eImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动<em>通信</em>组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理<em>通信</em>数据 */rn// 响应 OnRecei<em>v</em>e / OnPullRecei<em>v</em>e 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭<em>通信</em>组件 */rnagent.stop();rnrn/* 7:销毁<em>通信</em>组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=https://img-bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Ser<em>v</em>er 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Ser<em>v</em>er 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的<em>通信</em>线程中同时触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 下载地址:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   <em>HP-Socket</em> 作为底层的通用<em>框架</em>,性能是关键指标,绝对不能成为系统的瓶颈。<em>HP-Socket</em> 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.3 更新 ***[/color][/size][/b]rn rn[b][i]> common-src 优化:[/i][/b]rn-----------------rn 1、优化<em>通信</em>组件的同步机制rn 2、整体性能提升约 10%rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/ISer<em>v</em>er/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 <em>UDP</em> 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 <em>UDP</em> 包最大长度)rn[/code] 2、小文件发送方法 SendSmallFile() [code=text]rn1) TCP 组件增加方法 SendSmallFile(lpszFileName, pHead, pTail)rn2) 通过 pHead 和 pTail 参数,可以分别在文件数据的头部和尾部加入自定义数据rn3) SendSmallFile() 只能发送 4096 KB 以内大小的文件rn[/code] 3、HPSocket.dll 和 HPSocket4C.dll 增加以下导出方法[code=text]rn1) SYS_WSAGetLastError():调用系统的 WSAGetLastError()rn2) SYS_SetSocketOption():调用系统的 setsockopt()rn3) SYS_GetSocketOption():调用系统的 getsockopt()rn4) SYS_IoctlSocket() :调用系统的 ioctlsocket()rn5) SYS_WSAIoctl() :调用系统的 WSAIoctl()[/code]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent <em>通信</em>组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 E<em>v</em>ent Select <em>通信</em>模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP <em>通信</em>模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端<em>通信</em>组件rn 4、TcpAgent / TcpPullAgent 的使用方式依然简单,提供以下接口方法:rn[code=c]rn/* 1) 通知接口方法:*/rnOnPrepareConnect(CONNID dwConnID, SOCKET socket)rnOnConnect(CONNID dwConnID)rnOnSend(CONNID dwConnID, const BYTE* pData, int iLength)rnOnRecei<em>v</em>e(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnRecei<em>v</em>e(CONNID dwConnID, int iLength) //(Pull 模型)rnOnClose(CONNID dwConnID)rnOnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rnOnAgentShutdown()rnrn/* 2) 主要操作方法:*/rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)rnStop()rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)rnDisconnect(CONNID dwConnID, BOOL bForce = TRUE)rnFetch(CONNID dwConnID, BYTE* pData, int iLength) //(Pull 模型)rn[/code] 5、增加 TcpAgent / TcpPullAgent 使用示例:rn * Agent-PFMrn * Agent-Pullrn * Agent-4Crn[img=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpSer<em>v</em>er 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://img-bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Ja<em>v</em>a SDK:[/i][/b]rn-----------------rn 1、提供 Ja<em>v</em>a 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只<em>支持</em> Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 ser<em>v</em>er 模式("ja<em>v</em>a -ser<em>v</em>er",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Ja<em>v</em>a SDK 提供以下<em>通信</em>组件:rn[code=text]rn1) TcpSer<em>v</em>er:TCP <em>通信</em>服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP <em>通信</em>客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP <em>通信</em> Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpSer<em>v</em>er:<em>UDP</em> <em>通信</em>服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:<em>UDP</em> <em>通信</em>客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建<em>通信</em>组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnRecei<em>v</em>e 回调函数对象rnagent.setCallBackOnRecei<em>v</em>e(new OnRecei<em>v</em>eImpl());rn// (必须)PULL 模型需要设置 OnPullRecei<em>v</em>e 回调函数对象rn// agent.setCallBackOnPullRecei<em>v</em>e(new OnPullRecei<em>v</em>eImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动<em>通信</em>组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理<em>通信</em>数据 */rn// 响应 OnRecei<em>v</em>e / OnPullRecei<em>v</em>e 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭<em>通信</em>组件 */rnagent.stop();rnrn/* 7:销毁<em>通信</em>组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=https://img-bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Ser<em>v</em>er 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Ser<em>v</em>er 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的<em>通信</em>线程中同时触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.3 更新 ***[/color][/size][/b]rn rn[b][i]> 增加其它语言 Demo:[/i][/b]rn-----------------rn 1、C#rn 2、Delphirn 3、E 语言rnrn[b][i]> Bug Fix:[/i][/b]rn-----------------rn 1、修复 IP 地址判断错误 Bugrn 1) 客户端组件连接服务器时,如果服务器 IP 地址满位(12个数字:‘AAA.BBB.CCC.DDD’)则被错误地判断为域名rn 2) 影响组件:所有 TCP/<em>UDP</em> 客户端组件rn 3) 影响版本:<em>v</em>3.1.2 及之前所有版本rn 2、 修复域名或主机名的 IP 地址解析错误 Bugrn 1) 客户端组件通过域名或主机名连接服务器时,可能会解析到错误的 IP 地址rn 2) 影响组件:所有 TCP/<em>UDP</em> 客户端组件rn 3) 影响版本:<em>v</em>3.1.2 及之前所有版本rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.2 更新 ***[/color][/size][/b]rn rn[b][i]> 修改 Ser<em>v</em>er 组件的 OnClose() / OnError() 事件的触发规则:[/i][/b]rn-----------------rn 1、以前版本的 TCP/<em>UDP</em> Ser<em>v</em>er 组件中,当关闭一个连接时可能会同时触发一个 OnClose() 事件和若干个 OnError() 事件rn 2、由于存在上述可能性,所以应用程序需要对 OnClose() / OnError() 的处理事件代码段进行同步rn 3、从 <em>v</em>3.1.2 开始,多个 OnClose() / OnError() 事件同时发生时,组件只会向应用通知第一个事件,后续事件则忽略rn 4、应用程序在处理 OnClose() / OnError() 事件时不必处理同步,减少了出错的可能和编写同步及检测代码的负担rn[code=c]rn/* 示例代码一:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CSer<em>v</em>erDlg::OnClose(CONNID dwConnID)rnrn // 以前版本:rn // 有可能存在并发的 OnClose()/OnError(),要把代码放在临界区中并检测返回值rn CCriSecLock locallock(m_csPkgInfo); // GetConnectionExtra(dwConnID, &pInfo) && pInfo != nullptr)rn rn m_Ser<em>v</em>er->SetConnectionExtra(dwConnID, nullptr);rn delete pInfo;rn rnrn rn/* 示例代码二:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CSer<em>v</em>erDlg::OnClose(CONNID dwConnID)rnrn // <em>v</em>3.1.2 版本:rn // 只会接收到一个 OnClose()/OnError() 事件,能安全地移除临界区代码和检测代码rn rn PVOID pInfo = nullptr;rn m_Ser<em>v</em>er->GetConnectionExtra(dwConnID, &pInfo);rn ASSERT(pInfo != nullptr);rn rn delete pInfo;rnrn[/code]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加导出纯 C 函数的动态链接库 HPSocket4C.dll:[/i][/b]rn-----------------rn 1、增加代码文件 HPSocket4C.h 和 HPSocket4C.cpp,用于创建 HPSocket4C.dllrn 2、导出纯 C 函数,让其它语言(如:C/C#/Delphi 等)能方便地使用 HPSocketrn 3、HPSocket4C.dll 使用方法rn[code=text]rn方法一:rn----------------------------------------------------------------------------rn(0) (C/C++ 程序)包含 HPSocket4C.h 头文件rn(1) 调用 ::Create_HP_XxxListener() 函数创建监听器对象rn(2) 调用 ::Create_HP_Xxx(pListener) 函数创建 HPSocket 对象rn(3) 调用 ::HP_Set_FN_Xxx_OnYyy(pListener, ...) 函数设置监听器的回调函数rn(4) 调用相关导出函数操作 HPSocket 对象rn(5) ...... ......rn(6) 调用 ::Destroy_HP_Xxx(pSocket) 函数销毁 HPSocket 对象rn(7) 调用 ::Destroy_HP_XxxListener(pListener) 函数销毁监听器对象rn rn方法二:rn----------------------------------------------------------------------------rn(1) 应用程序把需要用到的导出函数封装到特定语言的包装类中rn(2) 通过包装类封装后,以面向对象的方式使用 HPSocketrn[/code] 4、HPSocket4C.dll 动态链接库发行版本 [code=text]rn (1) x86/HPSocket4C.dll - (32位/MBCS/Release)rn (2) x86/HPSocket4C_D.dll - (32位/MBCS/DeBug)rn (3) x86/HPSocket4C_U.dll - (32位/UNICODE/Release)rn (4) x86/HPSocket4C_UD.dll - (32位/UNICODE/DeBug)rn (5) x64/HPSocket4C.dll - (64位/MBCS/Release)rn (6) x64/HPSocket4C_D.dll - (64位/MBCS/DeBug)rn (7) x64/HPSocket4C_U.dll - (64位/UNICODE/Release)rn (8) x64/HPSocket4C_UD.dll - (64位/UNICODE/DeBug)rn[/code]------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.3.1 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 下载地址:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   <em>HP-Socket</em> 作为底层的通用<em>框架</em>,性能是关键指标,绝对不能成为系统的瓶颈。<em>HP-Socket</em> 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.3.1 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象rn 2、增加 IPullClient 接口,用作 PULL Client 组件的基接口rn 3、IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)rn 4、增加 IComplexSocketListener 监听器接口,用作 Ser<em>v</em>er/Agent 组件的监听器基接口rn 5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Ser<em>v</em>er/Agent 组件原来的 OnSer<em>v</em>erShutdown/OnAgentShutdownrn 6、IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据rn 7、ISer<em>v</em>er 和 IAgent 组件增加“静默连接处理”相关方法:rn[code=c]rn1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 rn2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) rn3) SetMarkSilence():// 设置是否标记静默时间 rn4) IsMarkSilence():// 检测是否标记静默时间 rn[/code] [b][i]> 增加 UdpCast <em>通信</em>组件:[/i][/b]rn-----------------rn 1、UdpClient / UdpSer<em>v</em>er 用于 C/S 模式的点对点单播<em>通信</em>,但在某些应用场景下,需要用到组播或广播<em>通信</em>rn 2、UdpCast 实现了组播或广播<em>通信</em>,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法:rn[code=c]rn/* 1) 通知接口方法: */ rn OnPrepareConnect(IClient* pClient, SOCKET socket) rn OnConnect(IClient* pClient) rn OnSend(IClient* pClient, const BYTE* pData, int iLength) rn OnRecei<em>v</em>e(IClient* pClient, const BYTE* pData, int iLength) rn OnClose(IClient* pClient) rn OnError(IClient* pClient, EnSocketOperation enOperation, int iErrorCode) rn rn/* 2) 主要操作方法: */ rn Start(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE /*该参数被忽略*/) rn Stop() rn Connect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr) rn Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0) rn SendPackets(const WSABUF pBuffers[], int iCount) rn[/code] 3、增加 UdpCast 使用示例:Test<em>UDP</em>Castrn[img=https://img-bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.3 更新 ***[/color][/size][/b]rn rn[b][i]> common-src 优化:[/i][/b]rn-----------------rn 1、优化<em>通信</em>组件的同步机制rn 2、整体性能提升约 10%rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/ISer<em>v</em>er/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 <em>UDP</em> 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 <em>UDP</em> 包最大长度)rn[/code] 2、小文件发送方法 SendSmallFile() [code=text]rn1) TCP 组件增加方法 SendSmallFile(lpszFileName, pHead, pTail)rn2) 通过 pHead 和 pTail 参数,可以分别在文件数据的头部和尾部加入自定义数据rn3) SendSmallFile() 只能发送 4096 KB 以内大小的文件rn[/code] 3、HPSocket.dll 和 HPSocket4C.dll 增加以下导出方法[code=text]rn1) SYS_WSAGetLastError():调用系统的 WSAGetLastError()rn2) SYS_SetSocketOption():调用系统的 setsockopt()rn3) SYS_GetSocketOption():调用系统的 getsockopt()rn4) SYS_IoctlSocket() :调用系统的 ioctlsocket()rn5) SYS_WSAIoctl() :调用系统的 WSAIoctl()[/code]------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent <em>通信</em>组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 E<em>v</em>ent Select <em>通信</em>模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP <em>通信</em>模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端<em>通信</em>组件rn 4、TcpAgent / TcpPullAgent 的使用方式依然简单,提供以下接口方法:rn[code=c]rn/* 1) 通知接口方法:*/rnOnPrepareConnect(CONNID dwConnID, SOCKET socket)rnOnConnect(CONNID dwConnID)rnOnSend(CONNID dwConnID, const BYTE* pData, int iLength)rnOnRecei<em>v</em>e(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnRecei<em>v</em>e(CONNID dwConnID, int iLength) //(Pull 模型)rnOnClose(CONNID dwConnID)rnOnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rnOnAgentShutdown()rnrn/* 2) 主要操作方法:*/rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)rnStop()rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)rnDisconnect(CONNID dwConnID, BOOL bForce = TRUE)rnFetch(CONNID dwConnID, BYTE* pData, int iLength) //(Pull 模型)rn[/code] 5、增加 TcpAgent / TcpPullAgent 使用示例:rn * Agent-PFMrn * Agent-Pullrn * Agent-4Crn[img=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpSer<em>v</em>er 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://img-bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Ja<em>v</em>a SDK:[/i][/b]rn-----------------rn 1、提供 Ja<em>v</em>a 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只<em>支持</em> Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 ser<em>v</em>er 模式("ja<em>v</em>a -ser<em>v</em>er",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Ja<em>v</em>a SDK 提供以下<em>通信</em>组件:rn[code=text]rn1) TcpSer<em>v</em>er:TCP <em>通信</em>服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP <em>通信</em>客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP <em>通信</em> Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpSer<em>v</em>er:<em>UDP</em> <em>通信</em>服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:<em>UDP</em> <em>通信</em>客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建<em>通信</em>组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnRecei<em>v</em>e 回调函数对象rnagent.setCallBackOnRecei<em>v</em>e(new OnRecei<em>v</em>eImpl());rn// (必须)PULL 模型需要设置 OnPullRecei<em>v</em>e 回调函数对象rn// agent.setCallBackOnPullRecei<em>v</em>e(new OnPullRecei<em>v</em>eImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动<em>通信</em>组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理<em>通信</em>数据 */rn// 响应 OnRecei<em>v</em>e / OnPullRecei<em>v</em>e 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭<em>通信</em>组件 */rnagent.stop();rnrn/* 7:销毁<em>通信</em>组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=https://img-bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Ser<em>v</em>er 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Ser<em>v</em>er 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的<em>通信</em>线程中同时触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 下载地址:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   <em>HP-Socket</em> 作为底层的通用<em>框架</em>,性能是关键指标,绝对不能成为系统的瓶颈。<em>HP-Socket</em> 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/ISer<em>v</em>er/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 <em>UDP</em> 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 <em>UDP</em> 包最大长度)rn[/code] 2、小文件发送方法 SendSmallFile() [code=text]rn1) TCP 组件增加方法 SendSmallFile(lpszFileName, pHead, pTail)rn2) 通过 pHead 和 pTail 参数,可以分别在文件数据的头部和尾部加入自定义数据rn3) SendSmallFile() 只能发送 4096 KB 以内大小的文件rn[/code] 3、HPSocket.dll 和 HPSocket4C.dll 增加以下导出方法[code=text]rn1) SYS_WSAGetLastError():调用系统的 WSAGetLastError()rn2) SYS_SetSocketOption():调用系统的 setsockopt()rn3) SYS_GetSocketOption():调用系统的 getsockopt()rn4) SYS_IoctlSocket() :调用系统的 ioctlsocket()rn5) SYS_WSAIoctl() :调用系统的 WSAIoctl()[/code]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent <em>通信</em>组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 E<em>v</em>ent Select <em>通信</em>模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP <em>通信</em>模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端<em>通信</em>组件rn 4、TcpAgent / TcpPullAgent 的使用方式依然简单,提供以下接口方法:rn[code=c]rn/* 1) 通知接口方法:*/rnOnPrepareConnect(CONNID dwConnID, SOCKET socket)rnOnConnect(CONNID dwConnID)rnOnSend(CONNID dwConnID, const BYTE* pData, int iLength)rnOnRecei<em>v</em>e(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnRecei<em>v</em>e(CONNID dwConnID, int iLength) //(Pull 模型)rnOnClose(CONNID dwConnID)rnOnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rnOnAgentShutdown()rnrn/* 2) 主要操作方法:*/rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)rnStop()rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)rnDisconnect(CONNID dwConnID, BOOL bForce = TRUE)rnFetch(CONNID dwConnID, BYTE* pData, int iLength) //(Pull 模型)rn[/code] 5、增加 TcpAgent / TcpPullAgent 使用示例:rn * Agent-PFMrn * Agent-Pullrn * Agent-4Crn[img=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpSer<em>v</em>er 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://img-bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Ja<em>v</em>a SDK:[/i][/b]rn-----------------rn 1、提供 Ja<em>v</em>a 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只<em>支持</em> Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 ser<em>v</em>er 模式("ja<em>v</em>a -ser<em>v</em>er",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Ja<em>v</em>a SDK 提供以下<em>通信</em>组件:rn[code=text]rn1) TcpSer<em>v</em>er:TCP <em>通信</em>服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP <em>通信</em>客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP <em>通信</em> Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpSer<em>v</em>er:<em>UDP</em> <em>通信</em>服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:<em>UDP</em> <em>通信</em>客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建<em>通信</em>组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnRecei<em>v</em>e 回调函数对象rnagent.setCallBackOnRecei<em>v</em>e(new OnRecei<em>v</em>eImpl());rn// (必须)PULL 模型需要设置 OnPullRecei<em>v</em>e 回调函数对象rn// agent.setCallBackOnPullRecei<em>v</em>e(new OnPullRecei<em>v</em>eImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动<em>通信</em>组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理<em>通信</em>数据 */rn// 响应 OnRecei<em>v</em>e / OnPullRecei<em>v</em>e 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭<em>通信</em>组件 */rnagent.stop();rnrn/* 7:销毁<em>通信</em>组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=https://img-bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Ser<em>v</em>er 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Ser<em>v</em>er 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的<em>通信</em>线程中同时触发同一连接的 OnRecei<em>v</em>e 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.3 更新 ***[/color][/size][/b]rn rn[b][i]> 增加其它语言 Demo:[/i][/b]rn-----------------rn 1、C#rn 2、Delphirn 3、E 语言rnrn[b][i]> Bug Fix:[/i][/b]rn-----------------rn 1、修复 IP 地址判断错误 Bugrn 1) 客户端组件连接服务器时,如果服务器 IP 地址满位(12个数字:‘AAA.BBB.CCC.DDD’)则被错误地判断为域名rn 2) 影响组件:所有 TCP/<em>UDP</em> 客户端组件rn 3) 影响版本:<em>v</em>3.1.2 及之前所有版本rn 2、 修复域名或主机名的 IP 地址解析错误 Bugrn 1) 客户端组件通过域名或主机名连接服务器时,可能会解析到错误的 IP 地址rn 2) 影响组件:所有 TCP/<em>UDP</em> 客户端组件rn 3) 影响版本:<em>v</em>3.1.2 及之前所有版本rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.2 更新 ***[/color][/size][/b]rn rn[b][i]> 修改 Ser<em>v</em>er 组件的 OnClose() / OnError() 事件的触发规则:[/i][/b]rn-----------------rn 1、以前版本的 TCP/<em>UDP</em> Ser<em>v</em>er 组件中,当关闭一个连接时可能会同时触发一个 OnClose() 事件和若干个 OnError() 事件rn 2、由于存在上述可能性,所以应用程序需要对 OnClose() / OnError() 的处理事件代码段进行同步rn 3、从 <em>v</em>3.1.2 开始,多个 OnClose() / OnError() 事件同时发生时,组件只会向应用通知第一个事件,后续事件则忽略rn 4、应用程序在处理 OnClose() / OnError() 事件时不必处理同步,减少了出错的可能和编写同步及检测代码的负担rn[code=c]rn/* 示例代码一:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CSer<em>v</em>erDlg::OnClose(CONNID dwConnID)rnrn // 以前版本:rn // 有可能存在并发的 OnClose()/OnError(),要把代码放在临界区中并检测返回值rn CCriSecLock locallock(m_csPkgInfo); // GetConnectionExtra(dwConnID, &pInfo) && pInfo != nullptr)rn rn m_Ser<em>v</em>er->SetConnectionExtra(dwConnID, nullptr);rn delete pInfo;rn rnrn rn/* 示例代码二:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CSer<em>v</em>erDlg::OnClose(CONNID dwConnID)rnrn // <em>v</em>3.1.2 版本:rn // 只会接收到一个 OnClose()/OnError() 事件,能安全地移除临界区代码和检测代码rn rn PVOID pInfo = nullptr;rn m_Ser<em>v</em>er->GetConnectionExtra(dwConnID, &pInfo);rn ASSERT(pInfo != nullptr);rn rn delete pInfo;rnrn[/code]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.1.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加导出纯 C 函数的动态链接库 HPSocket4C.dll:[/i][/b]rn-----------------rn 1、增加代码文件 HPSocket4C.h 和 HPSocket4C.cpp,用于创建 HPSocket4C.dllrn 2、导出纯 C 函数,让其它语言(如:C/C#/Delphi 等)能方便地使用 HPSocketrn 3、HPSocket4C.dll 使用方法rn[code=text]rn方法一:rn----------------------------------------------------------------------------rn(0) (C/C++ 程序)包含 HPSocket4C.h 头文件rn(1) 调用 ::Create_HP_XxxListener() 函数创建监听器对象rn(2) 调用 ::Create_HP_Xxx(pListener) 函数创建 HPSocket 对象rn(3) 调用 ::HP_Set_FN_Xxx_OnYyy(pListener, ...) 函数设置监听器的回调函数rn(4) 调用相关导出函数操作 HPSocket 对象rn(5) ...... ......rn(6) 调用 ::Destroy_HP_Xxx(pSocket) 函数销毁 HPSocket 对象rn(7) 调用 ::Destroy_HP_XxxListener(pListener) 函数销毁监听器对象rn rn方法二:rn----------------------------------------------------------------------------rn(1) 应用程序把需要用到的导出函数封装到特定语言的包装类中rn(2) 通过包装类封装后,以面向对象的方式使用 HPSocketrn[/code] 4、HPSocket4C.dll 动态链接库发行版本 [code=text]rn (1) x86/HPSocket4C.dll - (32位/MBCS/Release)rn (2) x86/HPSocket4C_D.dll - (32位/MBCS/DeBug)rn (3) x86/HPSocket4C_U.dll - (32位/UNICODE/Release)rn (4) x86/HPSocket4C_UD.dll - (32位/UNICODE/DeBug)rn (5) x64/HPSocket4C.dll - (64位/MBCS/Release)rn (6) x64/HPSocket4C_D.dll - (64位/MBCS/DeBug)rn (7) x64/HPSocket4C_U.dll - (64位/UNICODE/Release)rn (8) x64/HPSocket4C_UD.dll - (64位/UNICODE/DeBug)rn[/code]------------------------------------------------------------------------------------------------
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列<em>通信</em>组件:[/i][/b]rn----------------- rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Ser<em>v</em>er 组件:rn 1) 组件类: CHttpSer<em>v</em>er、CHttpsSer<em>v</em>errn 2) 实现接口: ITcpSer<em>v</em>er / IComplexHttpResponderrn 3) 监听器接口: IHttpSer<em>v</em>erListenerrn 2、新增 HTTP Agent 组件:rn 1) 组件类: CHttpAgent、CHttpsAgentrn 2) 实现接口: ITcpAgent / IComplexHttpRequesterrn 3) 监听器接口: IHttpAgentListenerrn 3、新增 HTTP Client 组件:rn 1) 组件类: CHttpClient、CHttpsClientrn 2) 实现接口: ITcpClient / IHttpRequesterrn 3) 监听器接口: IHttpClientListenerrn 4、新增 HTTP 示例 Demo:rn 1) TestEcho-Http (源代码)rn 2) TestEcho-Http-4C (4C LIB / 4C DLL)rn 5、Http 监听器:rn 1) 监听器事件:[code=text]OnMessageBegin() : 【可选】开始解析rnOnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)rnOnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)rnOnHeader() : 【可选】请求头通知rnOnHeadersComplete() : 【必须】请求头完成通知rnOnBody() : 【必须】请求体报文通知rnOnChunkHeader() : 【可选】Chunked 报文头通知rnOnChunkComplete() : 【可选】Chunked 报文结束通知rnOnMessageComplete() : 【必须】完成解析通知rnOnUpgrade() : 【可选】升级协议通知rnOnParseError() : 【必须】解析错误通知[/code] 2) 监听器事件返回值(EnHttpParseResult):rn[code=text]HPR_OK : 继续解析rnHPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)rnHPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)rnHPR_ERROR : 终止解析,断开连接[/code][b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、ISer<em>v</em>er 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackSer<em>v</em>erListener / Destroy_HP_TcpPackSer<em>v</em>erListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddSer<em>v</em>erContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、ISer<em>v</em>er 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLSer<em>v</em>er、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullSer<em>v</em>er、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackSer<em>v</em>er、CSSLPackAgent、CSSLPackClientrn 4、SSL Ser<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL <em>通信</em>组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、<em>通信</em>结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境rn 7、新增 SSL 相关示例 Demo:rn 1) TestEcho-SSL (源代码)rn 2) TestEcho-SSL-Pack (DLL / 4C DLL)rn 3) TestEcho-SSL-4C (4C LIB)rn 4) TestEcho-SSL-PFM (LIB)rn[img=https://img-bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpSer<em>v</em>erListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)rn 3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)rn 4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READYrn 5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)rn 6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.hrn 7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.hrn 8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节rn 9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FFrnrn[b][i]> 增加静态库工程:[/i][/b]rn-----------------rn 1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库rn 2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)rn 3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIBrn 4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201610/12/1476242688_133695.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
学习HP-Socket
https://www.oschina.net/p/hp-socket Day01: 跟一遍代码 打开Windows的Demo TestEcho-<em>UDP</em> 设置与获取错误信息  根据《Windows核心编程》错误信息可以自己注册 可以在<em>v</em>s中添加监视@err,hr 获得实时错误信息 <em>v</em>oid WINAPI SetLastError( _In_ DWORD dwErrCode ); ...
Socket通信经典源码HPSocketCS
HPSocketCS是socket<em>通信</em>中比较好用的源码,这个是.net的
C#聊天程序基于HP-SOCKET V1.1最终版
HP-SOCKET我一直以来要要得一个SOCKET引擎,今天做了一个服务器客户端的例子把它测试了一下( 加了自己的心跳包功能,因为以后客户端有可能是android,而无法用HP client的心跳功能)。 例子程序中实现如下功能: 服务器端 1.有用户密码表,用于认证客户端的登陆 2.统计客户端连接状态,发了多少次数据,收了多少次数据,绑定到客户端的登陆用户上。 3.客户
推荐一款非常好用的网络通信框架-HP-Socket
谁用谁知道,以前自己开发TCP<em>通信</em>类,各种问题,所以直接使用第三方<em>框架</em>,不用自己造轮子,用起来也方便! 参考:https://www.oschina.net/p/hp-socket <em>HP-Socket</em> 详细介绍 <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em>/HTTP <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em>/HTTP 通...
高性能 TCP & UDP 通信框架 HP-Socket v3.4.1 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Delphi、E(易语言)、Ja<em>v</em>a、Python 等编程语言接口。<em>HP-Socket</em> 对<em>通信</em>层实现完全封装,应用程序不必关注<em>通信</em>层的任何细节;<em>HP-Socket</em> 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 <em>HP-Socket</em>,迅速掌握<em>框架</em>的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。<em>HP-Socket</em> 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * <em>HP-Socket</em> 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * <em>HP-Socket</em> 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * <em>HP-Socket</em> 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/hp-socket/doc[/url]rn ------------------------------------------------------------------------------------------------rn[b] [size=14px]【通用性】[/size][/b]rn   1、<em>HP-Socket</em> 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、<em>HP-Socket</em> 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 <em>HP-Socket</em> 的接口规范都可以无缝整合 <em>HP-Socket</em>。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用<em>框架</em>都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,<em>HP-Socket</em> 的接口设计得非常简单和统一。rn   2、<em>HP-Socket</em> 完全封装了所有底层<em>通信</em>细节,应用程序不必也不能干预底层<em>通信</em>操作。<em>通信</em>连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、<em>HP-Socket</em> 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 E<em>v</em>ent Select <em>通信</em>模型,在单独线程中执行<em>通信</em>操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Ser<em>v</em>er 组件:[/b]基于 IOCP <em>通信</em>模型,并结合缓存池、私有堆(Pri<em>v</em>ate Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Ser<em>v</em>er 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、<em>通信</em>规模和资源状况等现实场景调整 <em>HP-Socket</em> 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** <em>v</em>3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列<em>通信</em>组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnRecei<em>v</em>e 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackSer<em>v</em>er 实现 ITcpSer<em>v</em>er 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=https://img-bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个<em>通信</em>事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetRec<em>v</em>Policy()rn 4、ISer<em>v</em>er 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** <em>v</em>3.3.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象rn 2、增加 IPullClient 接口,用作 PULL Client 组件的基接口rn 3、IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)rn 4、增加 IComplexSocketListener 监听器接口,用作 Ser<em>v</em>er/Agent 组件的监听器基接口rn 5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Ser<em>v</em>er/Agent 组件原来的 OnSer<em>v</em>erShutdown/OnAgentShutdownrn 6、IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据rn 7、ISer<em>v</em>er 和 IAgent 组件增加“静默连接处理”相关方法:[code=c]rn1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 rn2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) rn3) SetMarkSilence():// 设置是否标记静默时间 rn4) IsMarkSilence():// 检测是否标记静默时间[/code][b][i]> 增加 UdpCast <em>通信</em>组件:[/i][/b]rn-----------------rn 1、UdpClient / UdpSer<em>v</em>er 用于 C/S 模式的点对点单播<em>通信</em>,但在某些应用场景下,需要用到组播或广播<em>通信</em>rn 2、UdpCast 实现了组播或广播<em>通信</em>,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法: [code=c]/* 1) 通知接口方法: */ rnOnPrepareConnect(IClient* pClient, SOCKET socket) rnOnConnect(IClient* pClient) rnOnSend(IClient* pClient, const BYTE* pData, int iLength) rnOnRecei<em>v</em>e(IClient* pClient, const BYTE* pData, int iLength) rnOnClose(IClient* pClient) rnOnError(IClient* pClient, EnSocketOperation enOperation, int iErrorCode) rn rn/* 2) 主要操作方法: */ rnStart(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE /*该参数被忽略*/) rnStop() rnConnect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr) rnSend(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0) rnSendPackets(const WSABUF pBuffers[], int iCount) [/code] 3、增加 UdpCast 使用示例:Test<em>UDP</em>Castrn[img=https://img-bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------
HP-Socket TCP & UDP 通信框架开发指南 5.0
<em>HP-Socket</em> TCP & <em>UDP</em> <em>通信</em><em>框架</em>开发指南 V5.0-20170801 <em>HP-Socket</em> TCP & <em>UDP</em> <em>通信</em><em>框架</em>开发指南 V5.0-20170801
UDP可靠传输文件(UDP网络文件传输)
本次主要更新在局域网传输时的效率,单向的两台机上传输,基本是5m/s,最高可以达到10m/s以上。 公网上,效率也可以。 qq.24508609 ---------------------------------------------------- sendfile.exe为收发文件 1.开启一个实例点接收 2.开启另一个实例点发送,指定IP,port默认即可,指定文件就开始传输。 接收的文件在c:\udxtemp.temp 传另一个文件需要关掉以前的实例从1重新开始 --------------------------------------------------- testudx.exe是互传数据的测试工具,数据为随即数据。 a.服务器,勾选,作为服务器(默认为客户),勾选发送数据(可选),点运行 b.填入ip,勾选发送数据(可选),点运行 ---------------------------- pchat.exe是一个基于<em>可靠</em>传输的点到点聊天工具 可以保证数据的完整性。
mina apach 网络通信框架高性能例子
mina apach 网络<em>通信</em><em>框架</em>高性能例子
UDP通信框架和代码
UDP<em>通信</em><em>框架</em>和代码,本人还只是个Java菜鸟,上传改代码只是为了互相交流
HPSocket 三种模型PACK,PUSH,PULL
由于TCP是流式套接字,所以socket收到的数据而言,可能不是一个完整的包或者粘包了。此时需要应用层来进行拆包组包了。例如客户端连续发送了三个数据包大小分别是:300,500,100。但是接收端接受到的数据可能是200,400,100,200。所以此时我们处理接收到的数据就要进行组包和拆包了。 由于200不足一个数据包,所以需要组合下一个数据包400。此时数据大小为600,但是客户端第一个发送...
HPSocket TCP通信中间件
HPSocket TCP<em>通信</em>中间件
[精]HP-socket 3.4.3 支持库 (高性能TCP/UDP通讯组件)预支持SSL
易语言的Demo在目录<em>HP-Socket</em>\Demo里面 HPsocket是一款免费的高性能通讯组件,经过本人测试,值得推荐给大家!!! ( HPsocket的作者很重视易语言用户,对易语言的<em>支持</em>也做到了尽心尽责,不但提供了DLL的<em>支持</em>而且还提供了易语言<em>支持</em>库 ,感动~~~)    <em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端
HP用SOCKET实现(客户端---服务端)
HP用SOCKET实现(客户端---服务端)<em>通信</em>.doc
HP-Socket下载
<em>HP-Socket</em> 是一套通用的高性能 TCP/<em>UDP</em> <em>通信</em><em>框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/<em>UDP</em> <em>通信</em>系统,提供 C/C++、C#、Del
可靠UDP网络库_eNet(安装包+教程)
ENet的目的是在<em>UDP</em>(用户数据报协议)之上提供一个相对简单,健壮的网络<em>通信</em>层。它提供的主要功能是可选的<em>可靠</em>,有序的数据包传送。
开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等
开源基于asio的网络<em>通信</em><em>框架</em>asio2,<em>支持</em>TCP,<em>UDP</em>,HTTP,RPC,SSL,跨平台,<em>支持</em><em>可靠</em><em>UDP</em>,<em>支持</em>TCP自动拆包,TCP数据报模式等 C++开发网络<em>通信</em>程序时用asio是个不错的选择,但asio本身是一套函数集,自己还要处理诸如“<em>通信</em>线程池管理、连接及生命周期管理、多线程收发数据的同步保护等”。因此这里对asio进行了一层封装,大大简化了对asio的使用。代码使用了C++...
深入网络通讯协议UDP 09 高效可靠UDP音视频传输02
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 11 高效可靠UDP音视频传输04
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 15 高效可靠UDP音视频传输08
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
如何使用HPSocket插件
代码实现了如何使用HPSocket进行<em>通信</em>,模拟使用中文进行信息发送,输入相应的IP地址和端口号可以实现<em>通信</em>。
HP-SOCKET很好用的网络底层引擎
这段时间对网络底层<em>框架</em>有些兴趣,找了几个,最后找到 HP-SOCKET,说明书写得很棒,使用也很简单。 做了一个测试程序,测试一下,随便学习怎么用它。 以后什么网络游戏呀,android传数据呀,都可以用它。 翻到用C#写的黄巾之乱DEMO,网络底层也可以用它,我想在网络层无后顾之忧了。 现在百度云放录像很好用,随便录了个黄巾之乱DEMO录像: h
如何让UDP可靠
最近和很多实时音视频领域的朋友交流中都有谈论到R<em>UDP</em>(Reliable <em>UDP</em>),这其实是个老生常谈的问题,R<em>UDP</em>在很多著名的项目上都有使用,例如google的QUIC和webRTC。在<em>UDP</em>之上做一层<em>可靠</em>,很多朋友认为这是很不靠谱的事情,也有朋友认为这是一个大杀器,可以解决实时领域里大部分问题。作为在教育公司来说,学霸君在很多实时场景下确实使用R<em>UDP</em>技术来解决我们的问题,不同场景我们采用的
C#实现UDP可靠传输
在网上看了很多材料。都说做标记啦,或者在包头加个字节长度啦。之类的很多。叫我说我也能说出一大堆。 可在具体实现上!真不知道从哪入手。 请高手们指导一下小弟。最好是有源码,或者留下QQ.我QQ:3042
深入网络通讯协议UDP 20 高效可靠UDP音视频传输13
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 26 高效可靠UDP音视频传输19
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 28 高效可靠UDP音视频传输21
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 30 高效可靠UDP音视频传输23
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 10 高效可靠UDP音视频传输03
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
推荐一个可靠UDP的开源项目,我用过了,效率比较高。
随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additi<em>v</em>e increase multiplicati<em>v</em>e decrease)算法彻底减少了TCP拥塞窗
请问UDP怎么实现文件可靠传输?
我现在局域网络采用<em>UDP</em>实现文件传输,可测试的传输文件老实丢包错误,打不开,请问怎么实现<em>可靠</em>传输呢,网上看到有个UDT协议的,可以实现,可不知道C#怎么去实现呢? 以前看到局域网的飞鸽传输文件非常快,
怎么让不可靠UDP可靠
转自:https://www.toutiao.com/a6589194755962307080/?tt_from=mobile_qq&amp;amp;utm_campaign=client_share&amp;amp;timestamp=1534206661&amp;amp;app=news_article&amp;amp;utm_source=mobile_qq&amp;amp;iid=40708017633&amp;amp;utm_medi...
udp如何实现可靠性传输?
如何用udp实现<em>可靠</em>性传输,虽然现在有几个比较成熟的开源库,但是知其所以然还是有必要的。
可靠UDP传输的实现!
一直纠结于<em>UDP</em>的<em>可靠</em>传输,在查看了UDT的相关介绍后,发现并不是我需要的,我需要的是一个可以进行多点传输的的<em>可靠</em><em>UDP</em>。最终,还是自己慢慢把它完成了,虽然还不够好,不过总算出来个<em>框架</em>了,以后改就容易
深入网络通讯协议UDP 12 高效可靠UDP音视频传输05
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
深入网络通讯协议UDP 13 高效可靠UDP音视频传输06
本课程为《FFmpeg音视频开发实战5》的进阶课程,也是终结篇。从第6部分开始,我们进入高阶课程的学习。针对音视频核心功能进一步深化讲解,更多的实际案例,从FFmpeg本地音视频处理,深入<em>UDP</em>网络通讯协议,<em>UDP</em>高效实时视频传输,丢包处理,到OpenGL/ES 特效,滤镜,到webRTC,SIP重量级网络通讯协议<em>框架</em>.以及当前比较流行,未来人才需求量非常大的机器学习,深度学习,移动端人工智能,投入更多的内容。
经典NHibernate之旅系列下载
从事.net必备学习的开源组件NHibernate,资料包括基础和高级的两部分 相关下载链接:[url=//download.csdn.net/download/applezhou6699/2376992?utm_source=bbsseo]//download.csdn.net/download/applezhou6699/2376992?utm_source=bbsseo[/url]
C# 编程规范文档说明下载
对于很多朋友来说,可以帮助他们形成一个好的习惯。 编程规范对日后程序的改进都是很有帮助的。 相关下载链接:[url=//download.csdn.net/download/lizhenlang/2950424?utm_source=bbsseo]//download.csdn.net/download/lizhenlang/2950424?utm_source=bbsseo[/url]
安国au6981/6982/6983量产工具下载
安国 au6981 6982 6983 量产工具 相关下载链接:[url=//download.csdn.net/download/man21cn/3744899?utm_source=bbsseo]//download.csdn.net/download/man21cn/3744899?utm_source=bbsseo[/url]
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制
我们是很有底线的