[推荐] 高性能跨平台网络通信框架 HP-Socket v5.4.1 [问题点数:300分,结帖人Ldcsaa]

Bbs1
本版专家分:55
结帖率 66.67%
Bbs9
本版专家分:54700
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大版内专家分月排行榜第三
Bbs5
本版专家分:4223
Bbs12
本版专家分:359048
版主
Blank
名人 2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Blank
金牌 2012年1月 总版技术专家分月排行榜第一
Bbs10
本版专家分:124560
Blank
红花 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大版内专家分月排行榜第一
Blank
黄花 2018年7月 VC/MFC大版内专家分月排行榜第二
2018年6月 VC/MFC大版内专家分月排行榜第二
2017年9月 VC/MFC大版内专家分月排行榜第二
2017年8月 VC/MFC大版内专家分月排行榜第二
2017年4月 VC/MFC大版内专家分月排行榜第二
2017年3月 VC/MFC大版内专家分月排行榜第二
2017年2月 VC/MFC大版内专家分月排行榜第二
2016年8月 VC/MFC大版内专家分月排行榜第二
2016年7月 VC/MFC大版内专家分月排行榜第二
2016年6月 VC/MFC大版内专家分月排行榜第二
2015年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2017年10月 VC/MFC大版内专家分月排行榜第三
2017年6月 VC/MFC大版内专家分月排行榜第三
2017年5月 VC/MFC大版内专家分月排行榜第三
2016年9月 VC/MFC大版内专家分月排行榜第三
2016年4月 VC/MFC大版内专家分月排行榜第三
2015年4月 VC/MFC大版内专家分月排行榜第三
2012年8月 VC/MFC大版内专家分月排行榜第三
Bbs1
本版专家分:55
Bbs1
本版专家分:85
Bbs1
本版专家分:20
Bbs1
本版专家分:20
Bbs1
本版专家分:20
Bbs9
本版专家分:85483
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第七
Bbs9
本版专家分:54700
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
本版专家分:180
Bbs7
本版专家分:13828
Bbs1
本版专家分:20
Bbs5
本版专家分:2863
Bbs1
本版专家分:20
Bbs2
本版专家分:373
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:78
Bbs5
本版专家分:3786
Bbs1
本版专家分:0
Bbs1
本版专家分:55
其他相关推荐
高性能网络通信框架 HP-Socket [推荐] [国产]
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的...
推荐一款非常好用的网络通信框架-HP-Socket
谁用谁知道,以前自己开发TCP通信类,各种问题,所以直接使用第三方框架,不用自己造轮子,用起来也方便! 参考:https://www.oschina.net/p/hp-socket HP-Socket 详细介绍 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通...
高性能网络通信框架 HP-Socket
 HP-Socket 详细介绍HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socke...
高性能跨平台(Win&Linux;)网络通信框架 HP-Socket
高性能跨平台(Win&Linux;)网络通信框架 HP-Socket 没有最好只有更好, 非源代码,太大无法上传,有网址可自行下载完整包 。 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前支持 Windows 和 Linux 平台。 HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性; HP-Socket 项目主页:http://www.oschina.net/p/hp-socket
高性能跨平台网络通信框架 HP-Socket v5.4.2
项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : http://www.docin.com/p-2137713732.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 75375912, 44636872 HP-Socket提供以下几类组件,详细内容请参考《HP-Socket网络...
高性能网络通信框架 HP-Socket v5.2.1
HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。
HP-Socket网络通信框架开发指南5.0版
HP-Socket网络通信框架开发指南5.0版.详细的说明。。。
HP-socket 3.5.1 支持库 (高性能TCP/UDP通讯组件)支持SSL
点击阅读原文    HP-socket越来越完善了,感谢大家一直以来的鼓励和支持!!   HPsocket是一款免费的高性能通讯组件,经过本人测试,值得推荐给大家!!!( HPsocket的作者很重视易语言用户,不但提供了DLL的支持而且还提供了易语言支持库 ,感动~~~)   HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于...
跨平台网络通信与服务器编程框架库(acl库)介绍
acl 工程从发布至今已经有近10年历史,已经被一些大公司的重要项目所使用,该工程提供了跨平台(LINUX, FreeBSD, WIN32, Solaris, MacOS)的网络通信库,其中包含了阻塞非阻塞两种通信方式,内部事件引擎支持 select/poll/epoll(linux)/kqueue(BSD)/devpool(solaris)/iocp(win32)/窗口消息(win32);另外,acl 库中的网络服务器框架是 acl 中最为重要的模块(其来源于著名的Postfix,由其中的 master
HPSocket 开发指南5.2
HP-Socket网络通信框架开发指南v5.2-20180201,方便开发人员学习和了解HPSocket
HP-Socket TCP & UDP 通信框架开发指南 5.0
HP-Socket TCP & UDP 通信框架开发指南 V5.0-20170801 HP-Socket TCP & UDP 通信框架开发指南 V5.0-20170801
HP-Socket网络通信框架开发指南
经典socket开发框架
高性能 TCP/UDP 通信框架 HP-Socket
From: http://www.oschina.net/p/hp-socket   HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封
C++网络框架和库
C++网络方面学习
[精]HP-socket 3.4.3 支持库 (高性能TCP/UDP通讯组件)预支持SSL
易语言的Demo在目录HP-Socket\Demo里面 HPsocket是一款免费的高性能通讯组件,经过本人测试,值得推荐给大家!!! ( HPsocket的作者很重视易语言用户,对易语言的支持也做到了尽心尽责,不但提供了DLL的支持而且还提供了易语言支持库 ,感动~~~)    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端
HP-Socket国产优秀socket通信组件推荐
* HP-Socket 官方网站:http://www.jessma.org * HP-Socket 项目主页:http://www.oschina.net/p/hp-socket * HP-Socket 开发文档:http://www.oschina.net/p/hp-socket/doc *HP-Socket 源代码下载地址:https://github.com/ldcsaa/HP-
高性能 TCP & UDP 通信框架 HP-Socket v4.2.1
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理支持:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,支持 Max-Age、expires、httpOnly、securern 3、Cookie 管理器支持 Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=http://img.bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有通信事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 vc-common-src 版本升级到 v2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器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]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.3 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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]*** v3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、HP-Socket 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、IServer 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.1 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v4.1.3
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器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、修正 ITcpServer 和 ITcpAgent 组件的 Onclose 事件在 SP_DIRECT 发送模式下的触发规则rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.4 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.4 更新 ***[/color][/size][/b]rn rn[b][i]> Bug 修复:[/i][/b]rn-----------------rn 1、修复 IClient 组件在连接发送数据时连接被断开可能导致程序崩溃 Bugrn 2、优化 vc-common-src 公共代码包的 CCASQueuern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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]*** v3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、HP-Socket 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、IServer 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v5.1.1 for Windows
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。[i][b]HP-Socket for Linux[/b][/i] 即将发布,敬请期待。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v5.1.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加暂停接收功能:[/i][/b]rn----------------- rn 1、所有 Server/Agent/Client 组件增加‘暂停接收数据’功能(UDP Server 组件除外)rn 2、API 更新:[code=c]1) HP_Server_PauseReceive (增加)rn2) HP_Server_IsPauseReceive (增加)rn3) HP_Agent_PauseReceive (增加)rn4) HP_Agent_IsPauseReceive (增加)rn5) HP_Client_PauseReceive (增加)rn6) HP_Client_IsPauseReceive (增加)[/code]rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、TCP Agent 增加方法 HP_Agent_ConnectWithExtra(),支持在连接完成前绑定附加数据rn 2、公共代码包 vc-common-src 版本升级到 v2.3.22rn 3、OpenSSL 版本升级到 1.1.0grn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v5.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> IPv6 支持:[/i][/b]rn----------------- rn 1、所有通信组件支持 IPv6rn 2、组件接口没有变化,组件内部通过传入的地址参数自动识别 IPv4 / IPv6rn 3、API 更新:[code=c]1) enum En_HP_IPAddrType (增加)rn2) struct HP_TIPAddr (增加)rn3) SYS_GetIPv4InAddr (删除)rn4) SYS_GetOptimalIPByHostName (删除)rn5) SYS_IsIPAddress (修改)rn6) SYS_GetIPAddress (修改)rn7) SYS_EnumHostIPAddresses (增加)rn8) SYS_FreeHostIPAddresses (增加)[/code]rnrn[b][i]> SSL 通信组件:[/i][/b]rn-----------------rn 1、多 SSL 证书支持,每个通信组件对象可以使用不同的 SSL 证书rn 2、通信组件对象绑定独立的 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_SSLServer_SetupSSLContext (增加)rn7) HP_SSLServer_AddSSLContext (增加)rn8) HP_SSLAgent_CleanupSSLContext (增加)rn9) HP_SSLClient_CleanupSSLContext (增加)rn10) HP_SSLServer_CleanupSSLContext (增加)[/code]rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** v4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理支持:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,支持 Max-Age、expires、httpOnly、securern 3、Cookie 管理器支持 Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=http://img.bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有通信事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 vc-common-src 版本升级到 v2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器rn 2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClientrn 3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequesterrn 4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.5.2 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.2 更新 ***[/color][/size][/b]rn rn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、IClient 组件 Start() 方法默认连接方式改为异步连接rn 2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址rn 3、HP-Socket 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址rn 4、IUdpCast 组件删除接口方法 Get/SetBindAddress()rn 5、IServer 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息rn 6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v4.3.1
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.3.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理支持:[/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、公共代码包 vc-common-src 版本升级到 v2.3.19rn 2、OpenSSL 版本升级到 1.1.0frn 3、优化 IServer/IAgent 组件,提升性能和稳定性rn------------------------------------------------------------------------------------------------rnrn[b][size=16px][color=#0000FF]*** v4.2.1 更新 ***[/color][/size][/b]rnrn[b][i]> HTTP Cookie 管理支持:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,支持 Max-Age、expires、httpOnly、securern 3、Cookie 管理器支持 Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=http://img.bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/i][/b]rn-----------------rn 1、Create_HP_HttpSyncClient 和 Create_HP_HttpsSyncClient 方法增加可选参数 pListenerrn 2、如果 pListener 非空则可以通过 pListener 监听 HttpSyncClient 的所有通信事件rnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、Demo 更新:HttpProxy,TestEcho-Http,TestEcho-Http-4Crn 2、公共代码包 vc-common-src 版本升级到 v2.3.18rn 3、OpenSSL 版本升级到 1.1.0ern------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.3 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器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]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rn------------------------------------------------------------------------------------------------
mina apach 网络通信框架高性能例子
mina apach 网络通信框架高性能例子
8个java 网络编程框架介绍
自从JDK1.4中有了NIO以后,这个方面越来越活跃,也为java赢得更多开发者的支持。 做java网络编程需要掌握一些基本的知识和技能:套接字编程、阻塞/非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、CORBA和Web服务 等等。 笔者在此只整理以下一些
Netty:高性能、高可用的NIO通信框架
Netty:高性能、高可用的NIO通信框架前言最近在做老钥匙箱的重构,一个要解决的关键问题是:如何让一台服务器同时支撑成千上万个tcp长连接?老的钥匙箱项目基于jdk的bio通信,一直以来,存在内存占用过多、CPU使用率高的问题。因此,我们花了一段时间考虑更换通信框架的问题。在讨论到底层io通讯框架的时候,我们最终选择了netty。依靠netty,实现了单台服务器同时支撑几万个tcp长连接。由于最新
高性能网络通信框架 HP-Socket 推荐指数6星★★★★★★
HP-Socket 官方网站:http://www.jessma.org HP-Socket 项目主页:http://www.oschina.net/p/hp-socket HP-Socket 开发文档:http://www.oschina.net/p/hp-socket/doc HP-Socket 源代码下载地址:https://github.com/ldcsaa/HP-Socket ...
.net 稳定 高效 易用 可同步 TCP 通信框架
使用平台:        WinXP,WIN7,WIN8,WINCE,WINPHONE。       使用.net 2.0 框架。 主要功能介绍:        1、可以代替 Oracle,Mysql客户端 在不安装Oracle,MySql客户端的情况下访问, 对数据库进行间接访问(需开始框架的服务器端)。        2、可以使本来没有网经功能的Sqlite具有网络访问的能力。(也是
基于C++高性能跨平台日志模块的分析与实现
C++高性能跨平台日志模块的分析与实现
跨平台高性能TCP服务器框架 &boost
基于boost的asio封装的高性能TCP服务器
一个C#高并发通讯组件
一个c#写的高并发组件 据作者测试 使用普通电脑 本机模拟 可以达到上万的高并发 给大家提供思路 抛砖引玉
Swoole 高性能网络通信框架
官网:http://www.swoole.com/ PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为
C#基于TCP、UDP协议的网络通信实现(unity)
一、TCP协议: TCP协议是面向有连接的,所以服务器要与客户端建立连接 服务器端: using System; using System.Net.Sockets; using System.Net; using System.Text; public static void Main(string[] args){ //创建服务器 Socket server=new So...
C++ 高性能服务器网络框架设计细节
GitChat 作者:范蠡 这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。需要注意的是一般大型服务器,其复杂程度在于其业务,而不是在于其代码工程的基本框架。大型服务器一般有多个服务组成,可能会支持CDN,或者支持所谓的“分布式”等
30款Linux 高性能网络开发库开源软件
Lua的epoll模块 lua-epoll Lua的epoll模块 更多细节,请查看sample.lua API: ok,err=epoll.setnonblocking(fd) 设置一个文件描述符非阻塞。 epfd,err=epoll.create() 创建一个 epoll 文件描述符。 ok,err=epoll.register(epfd,fd,eventmask) 把目
轻量级C#网络通信组件StriveEngine —— C/S通信开源demo(附源码)
转发连接: http://www.cnblogs.com/zhuweisky/p/3139801.html 前段时间,有几个研究ESFramework网络通讯框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送、不需要P2P、不存在好友关系、也不存在组广播、不需要服务器均衡、不需要跨服务器网络通讯、甚至都不
[Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架
1. 前言 本篇主要介绍Servant和Client都会使用到的公共基础,主要包括两大部分:一是对线程相关的封装;另是对Socket相关的封装。这些基础类间的关系比较简单,但是和Server/Client框架息息相关。 2. 线程相关 2.1. 类图 2.2. CShared 2.2.1. 功能 CShared实现了引用计数器,引用计数采用原子锁。所有需要使用到引用计数
ESFramework ——成熟的C#网络通信框架跨平台
ESFramework网络通信框架 是一套性能卓越、稳定可靠、强大易用的跨平台通信框架。也是.net平台首屈一指的成熟的C#网络通信框架。从最初的单纯的C#网络通信框架,历经10年,已经发展为支持包括
高性能跨平台渲染引擎系列一: 跨平台渲染引擎简介
引言:      一直工作比较忙,很久就想写点东西做个备忘,拖延至今。本系列也期望督促自己坚持记录分享,文中如有笔误或者理解偏差,欢迎各位指正交流。也期望未来基于该系列文章的相关代码同步到git上,最终完成一款高性能跨平台3D渲染引擎;     何为3D渲染引擎,借用百度百科的解释吧:       3D引擎作为一个名词已经存在了很多年,但即使是一些专业的引擎设计师,也很难就它的定义达成一个共识。通...
Thrift可扩展高性能的通信服务框架
Thrift可扩展高性能的通信服务框架 The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficie
HP-Socket V4.2.1
开源高性能 TCP/UDP 通信框架 HP-Socket v4.2.1. 最近使用Delphi XE8调用HP-Socket通信SDK. 原来带的Delphi的例子, 只能在低版本的Delphi(如Delphi7)下编译(还有一些bug), 本资源中包含完整的HP-Socket V4.2.1, 另外附加了我修改好的3个Delphi XE8下编译通过的Demo程序. 和Socket Tools工具做了通信测试.
通信框架】跨语言通信框架的比较——Protobuf、Thrift和Avro
一、概述 thrift :是由 Facebook 主导开发的一个跨平台、支持多语言的,通过定义 IDL 文件,自动生成 RPC 客户端与服务端通信代码的工具,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程
《连载 - 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时
通信框架Netty的详细介绍及应用
对于Netty的十一个疑问 【说明】本文原载于码农 IO(manong.io)官方微信 developerWorks,转载、引用请注明出处及作者。   1.Netty 是什么?     Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。   2.使用 Netty 能够做什么?
ACE简介
导读:   (转载自中国互动出版网,http://www.china-pub.com/computers/emook/1111/info.htm)   文章摘要:   ADAPTIVE Communication Environment (ACE) 是一种免费开放原代码的面向对象框架结构,该结构实现了许多并行通信软件的核心设计模式. ACE提供丰富的C++ wrapper facades, 以及可
高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/IServer/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 UDP 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 UDP 包最大长度)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]*** v3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent 通信组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 Event Select 通信模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP 通信模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端通信组件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)rnOnReceive(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnReceive(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=http://img.bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=http://img.bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Java SDK:[/i][/b]rn-----------------rn 1、提供 Java 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只支持 Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 server 模式("java -server",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Java SDK 提供以下通信组件:rn[code=text]rn1) TcpServer:TCP 通信服务端组件,支持 PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,支持 PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,支持 PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,支持 PUSH 模型rn5) UdpClient:UDP 通信客户端组件,支持 PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnReceive 回调函数对象rnagent.setCallBackOnReceive(new OnReceiveImpl());rn// (必须)PULL 模型需要设置 OnPullReceive 回调函数对象rn// agent.setCallBackOnPullReceive(new OnPullReceiveImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动通信组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理通信数据 */rn// 响应 OnReceive / OnPullReceive 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭通信组件 */rnagent.stop();rnrn/* 7:销毁通信组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=http://img.bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Server 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Server 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnReceive 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的通信线程中同时触发同一连接的 OnReceive 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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/UDP 客户端组件rn 3) 影响版本:v3.1.2 及之前所有版本rn 2、 修复域名或主机名的 IP 地址解析错误 Bugrn 1) 客户端组件通过域名或主机名连接服务器时,可能会解析到错误的 IP 地址rn 2) 影响组件:所有 TCP/UDP 客户端组件rn 3) 影响版本:v3.1.2 及之前所有版本rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.1.2 更新 ***[/color][/size][/b]rn rn[b][i]> 修改 Server 组件的 OnClose() / OnError() 事件的触发规则:[/i][/b]rn-----------------rn 1、以前版本的 TCP/UDP Server 组件中,当关闭一个连接时可能会同时触发一个 OnClose() 事件和若干个 OnError() 事件rn 2、由于存在上述可能性,所以应用程序需要对 OnClose() / OnError() 的处理事件代码段进行同步rn 3、从 v3.1.2 开始,多个 OnClose() / OnError() 事件同时发生时,组件只会向应用通知第一个事件,后续事件则忽略rn 4、应用程序在处理 OnClose() / OnError() 事件时不必处理同步,减少了出错的可能和编写同步及检测代码的负担rn[code=c]rn/* 示例代码一:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)rnrn // 以前版本:rn // 有可能存在并发的 OnClose()/OnError(),要把代码放在临界区中并检测返回值rn CCriSecLock locallock(m_csPkgInfo); // GetConnectionExtra(dwConnID, &pInfo) && pInfo != nullptr)rn rn m_Server->SetConnectionExtra(dwConnID, nullptr);rn delete pInfo;rn rnrn rn/* 示例代码二:*/rn/* ----------------------------------------------------------------------- */rnISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)rnrn // v3.1.2 版本:rn // 只会接收到一个 OnClose()/OnError() 事件,能安全地移除临界区代码和检测代码rn rn PVOID pInfo = nullptr;rn m_Server->GetConnectionExtra(dwConnID, &pInfo);rn ASSERT(pInfo != nullptr);rn rn delete pInfo;rnrn[/code]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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.1.2 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.2 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器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 异步操作安全性rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.3.1 正式发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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 监听器接口,用作 Server/Agent 组件的监听器基接口rn 5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Server/Agent 组件原来的 OnServerShutdown/OnAgentShutdownrn 6、IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据rn 7、IServer 和 IAgent 组件增加“静默连接处理”相关方法:rn[code=c]rn1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 rn2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) rn3) SetMarkSilence():// 设置是否标记静默时间 rn4) IsMarkSilence():// 检测是否标记静默时间 rn[/code] [b][i]> 增加 UdpCast 通信组件:[/i][/b]rn-----------------rn 1、UdpClient / UdpServer 用于 C/S 模式的点对点单播通信,但在某些应用场景下,需要用到组播或广播通信rn 2、UdpCast 实现了组播或广播通信,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 OnReceive(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 使用示例:TestUDPCastrn[img=http://img.bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.2.3 更新 ***[/color][/size][/b]rn rn[b][i]> common-src 优化:[/i][/b]rn-----------------rn 1、优化通信组件的同步机制rn 2、整体性能提升约 10%rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/IServer/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 UDP 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 UDP 包最大长度)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]*** v3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent 通信组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 Event Select 通信模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP 通信模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端通信组件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)rnOnReceive(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnReceive(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=http://img.bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=http://img.bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Java SDK:[/i][/b]rn-----------------rn 1、提供 Java 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只支持 Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 server 模式("java -server",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Java SDK 提供以下通信组件:rn[code=text]rn1) TcpServer:TCP 通信服务端组件,支持 PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,支持 PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,支持 PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,支持 PUSH 模型rn5) UdpClient:UDP 通信客户端组件,支持 PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnReceive 回调函数对象rnagent.setCallBackOnReceive(new OnReceiveImpl());rn// (必须)PULL 模型需要设置 OnPullReceive 回调函数对象rn// agent.setCallBackOnPullReceive(new OnPullReceiveImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动通信组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理通信数据 */rn// 响应 OnReceive / OnPullReceive 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭通信组件 */rnagent.stop();rnrn/* 7:销毁通信组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=http://img.bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Server 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Server 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnReceive 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的通信线程中同时触发同一连接的 OnReceive 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------
HP-Socket下载
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。   为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。
高性能 TCP & UDP 通信框架 HP-Socket v3.4.1 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201610/12/1476242688_133695.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
Linux多线程服务端编程:使用muduo C++网络库(写给每一位C++程序员,功力为证,集编程思想、经验之大成)
《Linux多线程服务端编程》主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即 one loop per thread。这是在Linux 下以 native 语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的服务端网络应用程序。《Linux多线程服务端编程》以muduo网络库为例,讲解这种编程模型的使用方法及注意事项。《Linux多线程服务端编程》的宗旨是贵精不贵多。掌握两种基本的同步原语就可以满足各种多线程同步的功能需求,还能写出更易用的同步设施。掌握一种进程间通信方式和一种多线程网络编程模型就足以应对日常开发任务,编写运行于公司内网环境的分布式服务系统。
高性能 TCP & UDP 通信框架 HP-Socket v3.3.2 正式发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn rn[b][size=14px]【高性能】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.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 监听器接口,用作 Server/Agent 组件的监听器基接口rn 5、IComplexSocketListener 提供 OnShutdown 通知方法取代 Server/Agent 组件原来的 OnServerShutdown/OnAgentShutdownrn 6、IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据rn 7、IServer 和 IAgent 组件增加“静默连接处理”相关方法:[code=c]rn1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 rn2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) rn3) SetMarkSilence():// 设置是否标记静默时间 rn4) IsMarkSilence():// 检测是否标记静默时间[/code][b][i]> 增加 UdpCast 通信组件:[/i][/b]rn-----------------rn 1、UdpClient / UdpServer 用于 C/S 模式的点对点单播通信,但在某些应用场景下,需要用到组播或广播通信rn 2、UdpCast 实现了组播或广播通信,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法: [code=c]/* 1) 通知接口方法: */ rnOnPrepareConnect(IClient* pClient, SOCKET socket) rnOnConnect(IClient* pClient) rnOnSend(IClient* pClient, const BYTE* pData, int iLength) rnOnReceive(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 使用示例:TestUDPCastrn[img=http://img.bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.2.2 更新 ***[/color][/size][/b]rn rn[b][i]> 增加若干帮助方法:[/i][/b]rn-----------------rn 1、批量发送方法 SendPackets()[code=text]rn1) IClient/IServer/IAgent 增加方法 SendPackets(pBuffers[], iBufferCount)rn2) 对于 TCP 组件 - 顺序发送所有数据包rn3) 对于 UDP 组件 - 把所有数据包组合成一个数据包发送(总长度不能大于 UDP 包最大长度)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]*** v3.2.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 TcpAgent / TcpPullAgent 通信组件:[/i][/b]rn-----------------rn 1、对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接rn 2、TcpClient / TcpPullClient 基于 Event Select 通信模型,每个组件对象管理一个 Socket,并开启一个线程,不适合上述应用场景rn 3、TcpAgent / TcpPullAgent 基于 IOCP 通信模型,一个组件对象管理多个 Socket,适合用作代理服务器或中转服务器的客户端通信组件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)rnOnReceive(CONNID dwConnID, const BYTE* pData, int iLength) //(Push 模型)rnOnReceive(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=http://img.bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=http://img.bbs.csdn.net/upload/201406/05/1401936640_775605.jpg][/img]rnrn[b][i]> 增加 HPSocket for Java SDK:[/i][/b]rn-----------------rn 1、提供 Java 开发包:hpsocket-3.2.1.jar(通过 JNA 实现,目前只支持 Windows 平台)rn 2、运行环境:JDK 1.6+,JVM 运行在 server 模式("java -server",在 client 模式下性能受影响)rn 3、MBCS 和 Unicode 版本分布位于包 org.jessma.hpsocket.mbcs 和 org.jessma.hpsocket.unicodern 4、HPSocket for Java SDK 提供以下通信组件:rn[code=text]rn1) TcpServer:TCP 通信服务端组件,支持 PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,支持 PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,支持 PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,支持 PUSH 模型rn5) UdpClient:UDP 通信客户端组件,支持 PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */rnTcpAgent agent = TcpAgent.create(Mode.PUSH);rnrn/* 2: 设置回调函数对象 */rn// (可选)rnagent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());rn// (可选)rnagent.setCallBackOnConnect(new OnConnectImpl());rn// (必须)PUSH 模型需要设置 OnReceive 回调函数对象rnagent.setCallBackOnReceive(new OnReceiveImpl());rn// (必须)PULL 模型需要设置 OnPullReceive 回调函数对象rn// agent.setCallBackOnPullReceive(new OnPullReceiveImpl());rn// (可选)rnagent.setCallBackOnSend(new OnSendImpl());rn// (必须)rnagent.setCallBackOnClose(new OnCloseImpl());rn// (必须)rnagent.setCallBackOnError(new OnErrorImpl());rn// (可选)rnagent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());rnrn/* 3:启动通信组件 */rnagent.start("127.0.0.1", false);rnrn/* 4:连接服务器 */rnagent.connect("localhost", (short)5555, pdwConnID);rnrn/* 5:处理通信数据 */rn// 响应 OnReceive / OnPullReceive 事件接收数据rn// 使用 agent.send(dwConnID, data, data.length) 发送数据rnrn/* 6:关闭通信组件 */rnagent.stop();rnrn/* 7:销毁通信组件 */rnTcpAgent.destroy(agent);rn[/code] 6、增加示例工程 TestEcho-4J,展示 HPSocket4J 的使用方法(包括 PULL 模型示例和性能测试示例)rn[img=http://img.bbs.csdn.net/upload/201406/05/1401936663_823244.jpg][/img]rnrn[b][i]> 优化数据收发策略:[/i][/b]rn-----------------rn 1、Server 和 Agent 组件提供以下三种数据发送策略:rn[code=text]rn1)PACK - 打包模式(默认):尽量把多个发送操作的数据组合在一起发送,增加传输效率rn2)SAFE - 安全模式:尽量把多个发送操作的数据组合在一起发送,并控制传输速度,避免缓冲区溢出rn3)DIRECT - 直接模式:对每一个发送操作都直接投递,适用于负载不高但要求实时性较高的场合rn[/code] 2、Server 和 Agent 组件提供以下两种数据接收策略:rn[code=text]rn1)SERIAL - 串行模式(默认):顺序触发同一连接的 OnReceive 和 OnClose/OnError 事件rn2)PARALLEL - 并行模式:在不同的通信线程中同时触发同一连接的 OnReceive 和 OnClose/OnError 事件 rn[/code]------------------------------------------------------------------------------------------------
纯Python实现的网络服务框架 pyxxnet3
pyxxnet_project Hi,This is a pure python implementation of network services development framework. A clever person solves a problem. A wise person avoids it Please call Me programming devil.
高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1 发布
[url=http://www.jessma.org][img=http://img.bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/hp-socket]http://www.oschina.net/p/hp-socket[/url]rn * HP-Socket 开发文档:[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、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。rn   2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。rn rn[b][size=14px]【易用性】[/size][/b]rn   1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。rn   2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。rn   3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。rnrn[b][size=14px]【高性能】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。rn   [b]Agent 组件:[/b]对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。rn rn[b][size=14px]【伸缩性】[/size][/b]rn   应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。rn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v4.1.1 更新 ***[/color][/size][/b]rnrn[b][i]> WebSocket 支持:[/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 支持 WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/i][/b]rn-----------------rn 1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器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]*** v4.0.1 更新 ***[/color][/size][/b]rnrn[b][i]> 增加 HTTP 系列通信组件:[/i][/b]rn----------------- rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=http://img.bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP Server 组件:rn 1) 组件类: CHttpServer、CHttpsServerrn 2) 实现接口: ITcpServer / IComplexHttpResponderrn 3) 监听器接口: IHttpServerListenerrn 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、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)rn 2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)rn 3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000rn 4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致rn 5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:rn 1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListenerrn 2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListenerrn 3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListenerrn 6、SSL 组件支持 SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rnrn[b][i]> 其他更新:[/i][/b]rn-----------------rn 1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能rn 2、更新所有 Demo 示例代码rnrn------------------------------------------------------------------------------------------------rn rn[b][size=16px][color=#0000FF]*** v3.5.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 SSL 系列通信组件:[/i][/b]rn-----------------rn 1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClientrn 2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClientrn 3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClientrn 4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口rn 5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数rn 6、通信结束后调用 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=http://img.bbs.csdn.net/upload/201605/23/1463992712_737233.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、ITcpServerListener 接口增加 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]*** v3.4.1 更新 ***[/color][/size][/b]rn rn[b][i]> 增加 Tcp Pack 系列通信组件:[/i][/b]rn-----------------rn 1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包rn 2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)rn 3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识rn 4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口rn[img=http://img.bbs.csdn.net/upload/201603/27/1459080805_239193.jpg][/img]rnrn[b][i]> 组件接口调整:[/i][/b]rn-----------------rn 1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)rn 2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作rn 3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()rn 4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()rn------------------------------------------------------------------------------------------------
C#高性能大容量SOCKET并发(零):代码结构说明
C#版完成端口具有以下特点: 连接在线管理(提供在线连接维护,连接会话管理,数据接收,连接断开等相关事件跟踪); 发送数据智能合并(组件会根据资源使用情况,对多个同时发送向同一连接的多个消息数据进行合并写入缓冲区; 内存池管理(提供一系列的接收和发送buffer可复用池); 数据读写封装; 通讯协议封装;
高并发高可用的通信框架实践
通信组件用于业务系统内部服务之间的调用,在大并发的电商平台中,需要满足高并发、高吞吐量、高可用的要求。本篇就针对这些特性要求提出的相关的解决方案。
NetworkComms网络通信框架序言
NetworkComms.Net     一款来自英国剑桥的c#语言的网络通信框架        2.3.1开源版本下载      03年大学毕业,主要做Web开发,大家可以看看networkcomms中文站: www.networkcomms.cn  自己基于网上开源程序二次开发的:)      从06年开始,便把主要的学习精力放到网络通信上, 主要使用C#语言,WinForm框架,
11个Java 开源 socket框架
Ice的Java版,Netty2作者的后续之作Apache MINA,Crmky的Cindy之外,还有个超简单的QuickServer,让你专心编写自己的业务代码,不用编写一行TCP代码。 一、QuickServer 是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议。 二、Nett
介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架,使用简单方便,性能稳定. 以前是收费的 目前已经开源:https://github.com/MarcFletcher/NetworkComms.Net
C++网络通信库性能大比拼
C/C++网络通信库有不少,本次benchmark的目的是为了公平的评估它们的网络I/O性能,当然是作为REST server, 因此每个server都写了一些代码,好在不是特别复杂。这个测试经过了好几轮,本文给出了最终的结论。先上结论,大家都忙:)候选者:cppcms, boost asio, libevent, muduo和 nginx,nginx不是库,这里做测试使用它作为基准,毕竟很多人心
NH-IM基于易语言的高性能即时通讯框架
Frist!        易语言不是只能写写小软件的,只要是编程语言就有他的潜力!Nh-IM框架交流群:817872022即时通讯交流群:620282926先说下框架的结构:服务器内部分为 : 1.TCP模型2.数据处理线程池3.业务逻辑4.框架内部功能处理模块5.开发者接口6.MySql处理池框架内置功能:非满负荷压力测试:收发包:3000+/秒收发量:0.3M/秒CPU占比:5%TCP 使用...
【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。现正在筹备开源中
PHP 异步通信框架 Swoole最新视频教程
百度网盘链接,php异步通信框架,Swoole最新视频教程。
分享一个Linux C++消息通信框架TCPSHM
由于本人从事行业关系,Linux环境下的低延迟通信是我关注的技术之一。要达到极端的低延迟,当然同机器内IPC比网络通信快,而Linux IPC方式中无疑是共享内存延迟最低。不过相对于TCP这种通用的通信方式来说,共享内存缺少了一些控制层的协议,比如进程A和B通过一个基于共享内存的消息队列通信,A很难知道队列另一端的B是否存在,具体的说就是基于共享内存的简单消息队列缺少了连接建立和断开的控制。另一方...
十三、Mina-基于JAVA-NIO的网络通讯框架
Mina是什么         Mina是一个基于NIO的网络框架,使用它编写程序时,可以专注于业务处理,而不用过于关心IO操作。不论应用程序采用什么协议(TCP、UDP)或者其它的,Mina提供了一套公用的接口,来支持这些协议。目前可以处理的协议有:HTTP, XML, TCP, LDAP, DHCP, NTP, DNS, XMPP, SSH, FTP... 。从这一点来说,Mina不仅仅是一个...
DebugBar V5.4.1
DebugBar V5.4.1 DebugBar V5.4.1
个人了解的一些Android网络通信框架的介绍
Volley Volley是 Google 推出的 Android 异步网络请求框架和图片加载框架。 其主要特性有: (1). 扩展性强。Volley 中大多是基于接口的设计,可配置性强。 (2). 一定程度符合 Http 规范,包括返回ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。 (3). 默认 Andr
Swoole,PHP语言的高性能网络通信框架
优势 纯C编写性能极强简单易用开发效率高事件驱动异步非阻塞并发百万TCP连接TCP/UDP/UnixSock服务器端/客户端全异步/半异步半同步支持多进程/多线程CPU亲和性/守护进程支持IPv4/IPv6网络 案例 swoole目前已被多家移动互联网、物联网、网络游戏、手机游戏企业使用,替代了C++、Java等复杂编程语言来实现网络服务器程序。 使用PHP+Sw
高性能网络通信框架Netty-基础概念篇
一、前言 Netty是一种可以轻松快速的开发协议服务器和客户端网络应用程序的NIO框架,它大大简化了TCP或者UDP服务器的网络编程,但是你仍然可以访问和使用底层的API,Netty只是对其进行了高层的抽象。 Netty的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存在性能问题。Netty是被精心设计的,它的设计参考了许多协议的实现,比如FTP,SMTP,HTTP和各种二进制和基于...
我们是很有底线的
关闭
关闭