高性能网络通信框架 HP-Socket v5.5.1,支持可靠UDP [问题点数:400分,结帖人Ldcsaa]

Bbs1
本版专家分:0
结帖率 78.57%
Bbs1
本版专家分:0
Bbs2
本版专家分:400
Bbs1
本版专家分:0
HP-Socket网络通信框架开发指南5.0版
HP-Socket<em>网络</em><em>通信框架</em>开发指南5.0版.详细的说明。。。
高性能跨平台(Win&Linux;)网络通信框架 HP-Socket
<em>高性能</em>跨平台(Win&Linux;)<em>网络</em><em>通信框架</em> HP-Socket 没有最好只有更好, 非源代码,太大无法上传,有网址可自行下载完整包 。 HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前<em>支持</em> Windows 和 Linux 平台。 HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性; HP-Socket 项目主页:http://www.oschina.net/p/<em>hp-socket</em>
高性能网络通信框架 HP-Socket v5.5.3,支持可靠 UDP
[url=https://github.com/ldcsaa/HP-Socket][img=https://img-bbs.csdn.net/upload/201904/16/1555345051_823245.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=https://www.docin.com/p-2224828035.html]https://www.docin.com/p-2224828035.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn [size=18px] [color=#FF6600][b][i] 本次更新对 UDP 系列组件作了大量优化,新增了<em>可靠</em> UDP 组件![/i][/b][/color][/size]rnrn [size=24px][b]v5.5.3 更新[/b][/size]rnrn [size=16px][b] 一、UDP 组件更新[/b][/size]rn 1. 增加<em>可靠</em> UDP 组件:IUdpArqServer、IUdpArqClientrn 2. 增加<em>可靠</em> UDP 示例 TestEcho-ARQ 和性能测试示例 TestEcho-ARQ-PFMrn 3. <em>可靠</em> UDP 组件详细说明请参考开发文档 《HP-Socket Development Guide》rn 4. 优化 IUdpServer 组件,修复潜在缺陷rn 5. C# SDK 增加 UDP 组件封装类rn 6. 放宽 UDP 组件的最大报文长度限制,SetMaxDatagramSize() 方法的最大值可以设置到 64KBrn 7. 放宽 ARQ UDP 组件的最大传输单元长度限制,SetMaxTransUnit() 方法的最大值可以设置到 64KBrn [img=https://img-bbs.csdn.net/upload/201904/16/1555345441_12065.jpg][/img]rnrn [size=16px][b] 二、Android NDK 更新[/b][/size]rn 1. 提供构建脚本 [color=#993300][i]build-android-ndk.sh[/i][/color] 用于编译 Android NDK 库文件rn 2. 提供构建脚本 [color=#993300][i]demo/build-android-ndk-demo.sh[/i][/color] 用于编译 Android NDK 示例可执行文件rn 3. 在发布包中提供已编译好的 Android NDK 库文件rn 4. Android NDK 库完全<em>支持</em> [color=#800000][i]SSL[/i][/color] 和 [color=#800000][i]ICONV[/i][/color] 功能rnrn [size=16px][b] 三、其他更新[/b][/size]rn 1. 修复 HP-Socket .net core SDK 在 Linux 平台下启动失败问题rn 2. 完善 Delphi SDK 及其示例 Demorn 3. 代码优化,提高稳定性rnrn --------------------------------------------------------------------------------rnrn [size=24px][b]HP-Socket 组件列表[/b][/size]rnrn [b] 1. 基础组件[/b]rn [img=https://img-bbs.csdn.net/upload/201904/16/1555347457_574039.jpeg][/img]rnrn [b] 2. SSL 组件[/b]rn [img=https://img-bbs.csdn.net/upload/201904/16/1555347503_957589.jpg][/img]rnrn [b] 3. HTTP 组件[/b]rn [img=https://img-bbs.csdn.net/upload/201904/16/1555347529_721498.jpg][/img]rn
高性能网络通信框架 HP-Socket v5.5.2,支持可靠 UDP
项目主页 : http://www.oschina.net/p/<em>hp-socket</em>n开发文档 : https://www.docin.com/p-2212773943.htmln下载地址 : https://github.com/ldcsaa/HP-SocketnQQ Group: 75375912, 44636872nnn本次更新对 UDP 系列组件作了大量优化,新增了<em>可靠</em> UDP 组件!n...
HP-Socket TCP & UDP 通信框架开发指南 5.0
HP-Socket TCP & UDP <em>通信框架</em>开发指南 V5.0-20170801 HP-Socket TCP & UDP <em>通信框架</em>开发指南 V5.0-20170801
HP-Socket网络通信框架开发指南
经典socket开发框架
rudp 高性能可靠性传输UDP网络库(远胜TCP)
r<em>udp</em> <em>高性能</em>,<em>可靠</em>性传输UDP<em>网络</em>库(远胜TCP)
大并发量socket 通信框架MINA介绍
前发行的 MINA 版本<em>支持</em>基于 Java NIO 技术的TCP/UDP 应用程序开发、串口通讯程序。rnrnMina 的应用层:rnrn[img]http://dl2.iteye.com/upload/attachment/0086/0566/706a1bff-8c5a-398c-9e27-412f45943cd7.jpg[/img]rnrn一个设计成熟的开源框架,总是会仅可能的减少侵入性,并在整个项目中找到合适的位置,而不应对整个项目的构架设计产生过多的影响,图 1 就是 MINA 的应用层示意图。从图
HP-Socket国产优秀socket通信组件推荐
* HP-Socket 官方网站:http://www.jessma.orgn* HP-Socket 项目主页:http://www.oschina.net/p/<em>hp-socket</em>n* HP-Socket 开发文档:http://www.oschina.net/p/<em>hp-socket</em>/docnn*HP-Socket 源代码下载地址:https://github.com/ldcsaa/HP-
c++Socket通信框架
基于c++的socket<em>通信框架</em>,windows版本,HP-SOCKET ..
高性能 TCP & UDP 通信框架 HP-Socket v4.1.3
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> 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=https://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=https://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=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://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------------------------------------------------------------------------------------------------
介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP<em>通信框架</em>,使用简单方便,性能稳定. 以前是收费的 目前已经开源:https://github.com/MarcFletcher/NetworkComms.Net
高性能 TCP & UDP 通信框架 HP-Socket v3.5.2 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://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.2.1
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/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/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> 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=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://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=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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(),<em>支持</em>在连接完成前绑定附加数据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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有通信组件<em>支持</em> 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 证书<em>支持</em>,每个通信组件对象可以使用不同的 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 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://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=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/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/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、IHttpClient 和 IHttpAgent 组件兼容没有长度标识(如:Content-Length Header)的 HTTP 响应报文rn 2、IHttpClient 和 IHttpAgent 组件改进 HEAD 请求的响应处理方式,应用程序无需在 OnHeadersComplete 事件中返回特殊值 HPR_SKIP_BODYrnrn[b][i]> 其它更新:[/i][/b]rn-----------------rn 1、公共代码包 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 管理<em>支持</em>:[/i][/b]rn----------------- rn 1、新增 Cookie 管理器,可在不同连接、不同组件对象间共享 Cookiern 2、Cookie 管理器实现了标准 HTTP Cookie 功能,<em>支持</em> Max-Age、expires、httpOnly、securern 3、Cookie 管理器<em>支持</em> Cookie 序列化与反序列化rn 4、IHttpClient 和 IHttpAgent 组件可通过 SetUseCookie() 方法设置是否开启 Cookie 功能rn[img=https://img-bbs.csdn.net/upload/201704/20/1492684145_272465.png][/img]rn[b][i]> HTTP Sync Client 通信组件更新:[/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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> SNIrn 1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数rn 2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书rn------------------------------------------------------------------------------------------------
HP-Socket通信框架使用入门
官方下载地址:https://github.com/ldcsaa/HP-Socket简单介绍下官方提供的内容:----DOC:目录下是官方提供的文档,包括Development Guide----Linux:Linux的工程----Windows:Windows的工程,我在Windows开发的详细介绍这个。      ----Bin:编译好的dll和lib      ----Demo:官方提供的使...
高性能跨平台网络通信框架 HP-Socket v5.4.3
[url=http://www.oschina.net/p/<em>hp-socket</em>][img=https://img-bbs.csdn.net/upload/201812/06/1544062060_254694.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2154702652.html]http://www.docin.com/p-2154702652.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn HP-Socket提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2154702652.html]HP-Socket<em>网络</em><em>通信框架</em>开发指南[/url]》:rnrn [b]Server:[/b]基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发通信场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]v5.4.3 更新[/b][/size]rnrn[size=16px][b] 一、HTTP 组件更新[/b][/size]rn 1. HTTP 组件可以手工启动 HTTP 通信,从而可以对 HTTP 通信执行 SOCKS 代理服务器设置等前置操作rn 2. HTTP 组件(Server/Agent/Client)增加以下接口方法<em>支持</em>手工启动 HTTP 通信rn[code=text]1) StartHttp():手工启动 HTTP 通信,当通信组件设置为非自动启动时,需要调用本方法启动 HTTP 通信rn2) SetHttpAutoStart():设置 HTTP 通信启动方式(默认:TRUE,自动启动)rn3) IsHttpAutoStart():获取 HTTP 通信启动方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. Bug 修复:UDP Server 在高并发场景下可能重复触发 OnAccept 事件rnrn[size=24px][b]v5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https 通信执行代理服务器设置等前置操作rn 2. SSL 组件(Server/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置通信组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取通信组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket 通信线程中异步触发 OnClose 事件rn 2. Server 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Server 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnReceive(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]v5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/IServer 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]v5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]v5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Server:[/b] SSL Server, SSL Pull Server, SSL Pack Serverrn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Server:[/b] HTTP Server, HTTPS Serverrn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo server/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo server/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo server/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo server/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo server/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo server/agent/client/sync-client
高性能跨平台网络通信框架 HP-Socket v5.4.4
[url=http://www.oschina.net/p/<em>hp-socket</em>][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2154702652.html]http://www.docin.com/p-2154702652.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn HP-Socket提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2154702652.html]HP-Socket<em>网络</em><em>通信框架</em>开发指南[/url]》:rnrn [b]Server:[/b]基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发通信场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]v5.4.4 更新[/b][/size]rnrn[size=16px][b] 一、TCP 组件更新[/b][/size]rn 1. IAgent 组件<em>支持</em>在连接服务器时指定本地IP地址和(或)本地端口rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 代码优化rn 2. http-parser 解析器升级到 2.9.0 版本rn 3. OpenSSL 版本升级到 1.1.0j 版本rn 4. 提供 _UDP_DISABLED 预编译宏用于移除 UDP 组件rnrn[size=24px][b]v5.4.3 更新[/b][/size]rnrn[size=16px][b] 一、HTTP 组件更新[/b][/size]rn 1. HTTP 组件可以手工启动 HTTP 通信,从而可以对 HTTP 通信执行 SOCKS 代理服务器设置等前置操作rn 2. HTTP 组件(Server/Agent/Client)增加以下接口方法<em>支持</em>手工启动 HTTP 通信rn[code=text]1) StartHttp():手工启动 HTTP 通信,当通信组件设置为非自动启动时,需要调用本方法启动 HTTP 通信rn2) SetHttpAutoStart():设置 HTTP 通信启动方式(默认:TRUE,自动启动)rn3) IsHttpAutoStart():获取 HTTP 通信启动方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. Bug 修复:UDP Server 在高并发场景下可能重复触发 OnAccept 事件rnrn[size=24px][b]v5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https 通信执行代理服务器设置等前置操作rn 2. SSL 组件(Server/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置通信组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取通信组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket 通信线程中异步触发 OnClose 事件rn 2. Server 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Server 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnReceive(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]v5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/IServer 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]v5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]v5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Server:[/b] SSL Server, SSL Pull Server, SSL Pack Serverrn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Server:[/b] HTTP Server, HTTPS Serverrn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo server/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo server/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo server/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo server/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo server/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo server/agent/client/sync-client
HPSocket 开发指南5.2
HP-Socket<em>网络</em><em>通信框架</em>开发指南v5.2-20180201,方便开发人员学习和了解HPSocket
高性能跨平台网络通信框架 HP-Socket v5.4.2
[url=http://www.oschina.net/p/<em>hp-socket</em>][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2137713732.html]http://www.docin.com/p-2137713732.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn HP-Socket提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2137713732.html]HP-Socket<em>网络</em><em>通信框架</em>开发指南[/url]》:rnrn [b]Server:[/b]基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发通信场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]v5.4.2 更新[/b][/size]rnrn[size=16px][b] 一、SSL 组件更新[/b][/size]rn 1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https 通信执行代理服务器设置等前置操作rn 2. SSL 组件(Server/Agent/Client)增加以下接口方法<em>支持</em>手工启动 SSL 握手rn[code=text]1) StartSSLHandShake():手工启动 SSL 握手,当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手rn2) SetSSLAutoHandShake():设置通信组件握手方式(默认:TRUE,自动握手)rn3) IsSSLAutoHandShake():获取通信组件握手方式[/code]rn[size=16px][b] 二、其他更新[/b][/size]rn 1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket 通信线程中异步触发 OnClose 事件rn 2. Server 与 Agent 组件的 DIRECT 发送策略也<em>支持</em>通过 GetPendingDataLength() 方法实现流控rn 3. Server 与 Agent 组件的 Disconnect() 方法不再<em>支持</em>‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开rn 4. OnSend 事件<em>支持</em> 三种同步策略rn[code=text]1) OSSP_NONE:不同步(默认)rn2) OSSP_CLOSE:同步 OnClosern3) OSSP_RECEIVE:同步 OnClose 和 OnReceive(只用于 TCP 组件)[/code] 5. OpenSSL 版本升级到 1.1.0i 版本rnrn[size=24px][b]v5.4.1 更新[/b][/size]rnrn[size=16px][b] 一、加入线程池公共组件[/b][/size]rn 1. 加入 IHPThreadPool 线程池公共组件rn 2. IHPThreadPool 主要方法rn[code=text]1) Start:启动线程池rn2) Stop:关闭线程池rn3) Submit:提交任务rn4) AdjustThreadCount:调整线程池大小[/code]rn[size=16px][b] 二、接口更新[/b][/size]rn 1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口rn 3. IClient/IAgent/IServer 接口增加方法 IsConnected(),检测是否有效连接rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. 修复已知问题rn 2. 性能优化rnrn[size=24px][b]v5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]v5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Server:[/b] SSL Server, SSL Pull Server, SSL Pack Serverrn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Server:[/b] HTTP Server, HTTPS Serverrn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo server/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo server/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo server/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo server/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo server/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo server/agent/client/sync-client
可靠传输UDP库SDK汇总
UDT,UDX,VTCP,NTCP SDK汇总
hp socket tcp udp
<em>hp-socket</em> <em>高性能</em>的tcp/<em>udp</em> socket组件,<em>支持</em>c++,c#,java等语言
高性能跨平台通信框架 HP-Socket v5.3.2
[url=http://www.oschina.net/p/<em>hp-socket</em>][img=http://img.bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img][/url]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2079016612.html]http://www.docin.com/p-2079016612.html[/url]rn [b]下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn HP-Socket提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2079016612.html]HP-Socket<em>网络</em><em>通信框架</em>开发指南[/url]》:rnrn [b]Server:[/b]基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发通信场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b]Client:[/b]基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]v5.3.2 更新[/b][/size]rnrn[size=16px][b] 一、Linux版本更新[/b][/size]rn 1. Android NDK <em>支持</em>:所有组件源码均可使用Android NDK编译,在Android平台上运行rn 2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败rn 3. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能rn 4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rn [img=https://img-bbs.csdn.net/upload/201806/27/1530069576_297837.jpg][/img]rnrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069680_240026.jpg][/img]rnrn[size=16px][b] 二、Windows版本更新[/b][/size]rn 1. 修复 C# SDK 关于 SSL 初始化失败 Bugrn 2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能rnrn[size=16px][b] 三、其它更新[/b][/size]rn 1. http-parser 解析器升级到 2.8.1 版本rn 2. OpenSSL 版本升级到 1.1.0hrn 3. jemalloc 版本升级到 5.1.0 版本rnrn[size=24px][b]v5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Server:[/b] SSL Server, SSL Pull Server, SSL Pack Serverrn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069791_927215.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Server:[/b] HTTP Server, HTTPS Serverrn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn [img=https://img-bbs.csdn.net/upload/201806/27/1530069809_634854.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo server/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo server/agent/clientrn 3. [b]testecho-ssl-pull:[/b] (SO) SSL pull echo server/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo server/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo server/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo server/agent/client/sync-client
高性能网络通信框架 HP-Socket v5.2.1 发布
[img=https://img-bbs.csdn.net/upload/201712/14/1513251736_538356.png][/img]rnrn [b]项目主页 :[/b] [url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn [b]开发文档 :[/b] [url=http://www.docin.com/p-2079016612.html]http://www.docin.com/p-2079016612.html[/url]rn [b] 下载地址 :[/b] [url=https://github.com/ldcsaa/HP-Socket]https://github.com/ldcsaa/HP-Socket[/url]rn [b]QQ Group :[/b] [url=http://shang.qq.com/wpa/qunwpa?idkey=5056a5463f52cac937e0da8a0c313993073294a3dafaeec3724735a030d4e294]75375912[/url], [url=http://shang.qq.com/wpa/qunwpa?idkey=f5273069775c0c98e43bd4960702b5a9b4812b000771f5a1d3f34c544f3b6d6c]44636872[/url]rnrn HP-Socket提供以下几类组件,详细内容请参考《[url=http://www.docin.com/p-2079016612.html]HP-Socket<em>网络</em><em>通信框架</em>开发指南[/url]》:rnrn [b]Server:[/b]基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,<em>支持</em>超大规模、高并发通信场景。rn [b]Agent:[/b]Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。rn [b] Client:[/b]基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。rnrn[size=24px][b]v5.2.1 更新[/b][/size]rnrn[size=16px][b] 一、发布包调整[/b][/size]rn 1. 版本号修订:Windows 和 Linux 发行版使用统一版本号rn 2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLLrn 3. 发布文件默认包含 SSL 和 HTTP 组件rn 4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编rnrn[size=16px][b] 二、新增 Linux SSL 组件[/b][/size]rn 1. [b]Server:[/b] SSL Server, SSL Pull Server, SSL Pack Serverrn 2. [b]Agent:[/b] SSL Agent, SSL Pull Agent, SSL Pack Agentrn 3. [b]Client:[/b] SSL Client, SSL Pull Client, SSL Pack Clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450200_429283.jpg][/img]rnrn[size=16px][b] 三、新增 Linux HTTP 组件[/b][/size]rn 1. [b]Server:[/b] HTTP Server, HTTPS Serverrn 2. [b]Agent:[/b] HTTP Agent, HTTP Agentrn 3. [b]Client:[/b] HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450465_284991.jpg][/img]rnrn[size=16px][b] 四、新增 Linux Demo[/b][/size]rn 1. [b]testecho-ssl:[/b] (SRC) SSL simple test echo server/agent/clientrn 2. [b]testecho-ssl-pfm:[/b] (SO) SSL performance test echo server/agent/clientrn 3.[b] testecho-ssl-pull:[/b] (SO) SSL pull echo server/agent/clientrn 4. [b]testecho-ssl-pack:[/b] (4C SO) SSL pack echo server/agent/clientrn 5. [b]testecho-http:[/b] (SRC) HTTP simple test echo server/agent/client/sync-clientrn 6. [b]testecho-http-4c:[/b] (4C SO) HTTP simple test echo server/agent/client/sync-clientrn[img=https://img-bbs.csdn.net/upload/201802/01/1517450514_831523.jpg][/img]rnrn[size=16px][b] 五、其它更新[/b][/size]rn 1. 代码优化和已知 Bug 修复
基于Netty4实现的UDP双向通信源码
本源码是《NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战》一文的服务端源码实现(Netty4版),详见:http://www.52im.net/thread-378-1-1.html
UDP网络通讯/UDP可靠性实现
UDP<em>网络</em>通讯在前面一篇博客中写道TCP套接字的<em>网络</em>通讯TCP<em>网络</em>通讯;下面来介绍UDP套接字的<em>网络</em>通讯。一、UDP与TCP的区别:nTCP是一种面向连接的、<em>可靠</em>的、基于字节流的传输层通信协议nUDP是一种无连接的传输层协议,提供面向事务的简单不<em>可靠</em>信息传送服务。<em>可靠</em>性由上层应用实现,所以要实现UDP的<em>可靠</em>性传输,必须通过应用层来实现和控制。n二、TCP如何实现<em>可靠</em>性传输n请求与应答n按序到达n丢包
ENET库(可靠UDP)
ENet官网:http://enet.bespin.org/nNDK编译源码:http://download.csdn.net/download/yuanchunsi/10151620nnENet的目的是提供一个相对轻量、简单、稳定的基于UDP的<em>网络</em>通信。主要特色就是提供了可选的、<em>可靠</em>的、顺序传送的数据包。nENet忽略了某些高级<em>网络</em>的功能,特别是特定的应用,如认证、lobbying、服务器发现,加密,或其他类似的任务等,从而保证ENET的库文件灵活,可移植,易于嵌入。
可靠的UDP网络库_eNet(安装包+教程)
ENet的目的是在UDP(用户数据报协议)之上提供一个相对简单,健壮的<em>网络</em>通信层。它提供的主要功能是可选的<em>可靠</em>,有序的数据包传送。
C#聊天程序基于HP-SOCKET V1.1最终版
HP-SOCKET我一直以来要要得一个SOCKET引擎,今天做了一个服务器客户端的例子把它测试了一下( 加了自己的心跳包功能,因为以后客户端有可能是android,而无法用HP client的心跳功能)。nnn例子程序中实现如下功能:n服务器端n1.有用户密码表,用于认证客户端的登陆n2.统计客户端连接状态,发了多少次数据,收了多少次数据,绑定到客户端的登陆用户上。n3.客户
稳定可靠的C# 高性能Socket网络服务端和客户端组件
稳定<em>可靠</em>的C# IOCP组件,加入底层心跳检测机制,<em>支持</em>批量发送多个数据包。单机服务端和客户端收发速率峰值达到50M bps。<em>网络</em>异常断线(服务端运行于虚拟机,然后禁用虚拟机网卡),超过心跳检测时间,能够自动关闭Socket. 客户端可作为服务器压力测试工具。
C# Socket 高并发通信框架
C# Socket 高并发<em>通信框架</em>n很强大的Socket<em>通信框架</em>,可以实现高并发,适用Core、Linux等多平台nn注释详细,代码规范,功能强大nnhttps://github.com/fengma312/socket.corenhttps://www.cnblogs.com/fengmazi/p/8183078.htmlnn2019年3月24日nDawnnn...
C++ 高性能服务器网络框架设计细节
本场 Chat 分享将介绍实际开发中开发一个<em>高性能</em>服务器需要掌握的技术原理:nn如何设计<em>网络</em>通信模块。n如何设计通信协议。n不同操作系统上的<em>网络</em>通信模型(以 windows 和 linux 为例)。n目前主流服务器框架的结构形式(单个服务)介绍。n...
Windows下基于UDP的可靠传输协议实现
前言:在公司实习了三个月,有一个月都是在做基于UDP协议的应用层软件开发,目的是要用在流媒体服务器上,传输高清视频图像帧。整个开发过程,从0到最后完成了几百兆以上的大文件<em>可靠</em>传输。UDP<em>网络</em>传输协议部分编程,由于存在丢包问题,确实有点复杂,现在分享一下自己的开发经验。n#ifndef UDPNONBLOCKINGOUTPUTn#define UDPNONBLOCKINGOUTPUTn#inclu
HPSocket--UDP传输客户端应用实例
矿用产量数据采集应用实例,使用HPsocket框架结构,通过UDP协议接收从服务器上传的数据并进行解码
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> 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=https://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=https://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/HTTP 通信框架 HP-Socket v4.1.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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 <em>支持</em>:[/i][/b]rn----------------- rn 1、所有 HTTP 组件增加 WebSocket 方法:rn 1) SendWSMessage(): 发送 WebSocket 数据包rn 2) GetWSMessageState(): 获取当前 WebSocket 状态rn 2、所有 HTTP 组件监听器增加 WebSocket 事件:rn 1) OnWSMessageHeader(): WebSocket 数据包头通知rn 2) OnWSMessageBody(): WebSocket 数据包体通知rn 3) OnWSMessageComplete(): WebSocket 数据包完成通知rn 3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C <em>支持</em> WebSocketrnrn[b][i]> 增加 HTTP Sync Client 通信组件:[/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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> 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=https://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=https://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.2 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/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]【<em>高性能</em>】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://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 实现,目前只<em>支持</em> 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 通信服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:UDP 通信客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */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=https://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]------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/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]【<em>高性能</em>】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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.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 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=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://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 实现,目前只<em>支持</em> 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 通信服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:UDP 通信客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */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=https://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 通信框架 HP-Socket v3.3.1 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/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]【<em>高性能</em>】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://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=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://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 实现,目前只<em>支持</em> 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 通信服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:UDP 通信客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */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=https://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]------------------------------------------------------------------------------------------------
高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 下载地址:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/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]【<em>高性能</em>】[/size][/b]rn   HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://img-bbs.csdn.net/upload/201406/05/1401936622_343162.jpg][/img]rn 6、增加 TcpAgent + TcpServer 实现的 HTTP 代理服务器示例:HttpProxyrn[img=https://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 实现,目前只<em>支持</em> 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 通信服务端组件,<em>支持</em> PUSH/PULL 模型rn2) TcpClient:TCP 通信客户端组件,<em>支持</em> PUSH/PULL 模型rn3) TcpAgent :TCP 通信 Agent 组件,<em>支持</em> PUSH/PULL 模型rn4) UdpServer:UDP 通信服务端组件,<em>支持</em> PUSH 模型rn5) UdpClient:UDP 通信客户端组件,<em>支持</em> PUSH 模型rn[/code] 5、HPSocket4J 的使用方法(以 TcpAgent 为例):rn[code=c]rn/* 0: 应用程序加入 hpsocket-3.2.1.jar 和 jna-4.1.0.jar */rnrn/* 1: 创建通信组件对象 */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=https://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]------------------------------------------------------------------------------------------------
HP-Socket V4.2.1
开源<em>高性能</em> TCP/UDP <em>通信框架</em> 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工具做了通信测试.
网络通信框架使用(topiot)
      topiot是基于tcp/ip协议栈的<em>网络</em>通信应用框架,可帮助我们快速开发<em>高性能</em>、高扩展的<em>网络</em>通信服务器。nn开源地址:https://github.com/xizhonghuai/topiotnntopiot.zip:点我下载nn使用说明nn1、下载topiot.zip完成后,直接运行“install.bat”安装到maven本地仓库。       nn2、相关配置nn     po...
滑动窗口机制实现的UDP可靠性传输(自己写的JAVA类)
滑动窗口机制实现的UDP<em>可靠</em>性传输(自己写的JAVA类)
高性能 TCP & UDP 通信框架 HP-Socket v3.4.1 正式发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。rn  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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.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=https://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------------------------------------------------------------------------------------------------rnrn[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=https://img-bbs.csdn.net/upload/201501/27/1422330885_541813.png][/img]rn------------------------------------------------------------------------------------------------
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布
[url=http://www.jessma.org][img=https://img-bbs.csdn.net/upload/201403/29/1396091144_455532.png][/img][/url]rn[color=#800000]  HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和 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 平台,将来会实现跨平台<em>支持</em>。[/color]rnrn * HP-Socket 官方网站:[url=http://www.jessma.org]http://www.jessma.org[/url]rn * HP-Socket 项目主页:[url=http://www.oschina.net/p/<em>hp-socket</em>]http://www.oschina.net/p/<em>hp-socket</em>[/url]rn * HP-Socket 开发文档:[url=http://www.oschina.net/action/project/go?id=25210&p=doc]http://www.oschina.net/p/<em>hp-socket</em>/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]【<em>高性能</em>】[/size][/b]rn   [b]Client 组件:[/b]基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。rn   [b]Server 组件:[/b]基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,<em>支持</em>超大规模连接,在高并发场景下实现高效内存管理。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=https://img-bbs.csdn.net/upload/201610/08/1475857393_73495.png][/img]rn[img=https://img-bbs.csdn.net/upload/201610/08/1475857418_443165.png][/img]rn 1、新增 HTTP 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 组件<em>支持</em> 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=https://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=https://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------------------------------------------------------------------------------------------------
UDP实现可靠传输
如何让UDP实现<em>可靠</em>传输自定义通讯协议,在应用层定义一些<em>可靠</em>的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传...
个人了解的一些Android网络通信框架的介绍
VolleyrnrnVolley是 Google 推出的 Android 异步<em>网络</em>请求框架和图片加载框架。rn其主要特性有:rn(1). 扩展性强。Volley 中大多是基于接口的设计,可配置性强。rn(2). 一定程度符合 Http 规范,包括返回ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的<em>支持</em>等。并<em>支持</em>重试及优先级定义。rn(3). 默认 Andr
HP-Socket组件下载
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封
mina apach 网络通信框架高性能例子
mina apach <em>网络</em><em>通信框架</em><em>高性能</em>例子
HpSocket v5.4.1 x64
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。
HP-Socket5.3.2
HP-Socket是一套通用的<em>高性能</em>TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中
HP-Socket-master-V5.4
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中
HP-Socket下载
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP <em>通信框架</em>,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。   为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。
基于C/S的一个文件传输
资源<em>支持</em>文件传输,选用的tcp通信,基于套接字实现的,如果想要同时<em>支持</em>tcp和<em>udp</em>通信,可以同时创立连个进程,这部分也实现了,但代码在公司电脑,可以交流。
11个Java 开源 socket框架
Ice的Java版,Netty2作者的后续之作Apachen MINA,Crmky的Cindy之外,还有个超简单的QuickServer,让你专心编写自己的业务代码,不用编写一行TCP代码。n一、QuickServer 是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议。nnn二、Nett
网络游戏如何使用UDP提供可靠传输
  UDP本身不提供<em>可靠</em>传输,但是传输效率比TCP高。能提供<em>可靠</em>传输的UDP应该是UDP和TCP的某种折衷,这样它才能提供<em>可靠</em>的,有效率的传输。 n  所以我们得先了解TCP使如何提供<em>可靠</em>传输的,再看看TCP效率不高的原因是什么,最后提出一种<em>可靠</em>的UDP传输方案。nnTCP是如何提供<em>可靠</em>传输nnn建立连接(标志位):通信前确认通信实体存在。n序号机制(序号、确认号):确保了数据是按序、完整到达。n...
基于Java的RDMA高性能通信库(二):Java Socket Over RDMA
 nn目录nn1.Comparing JSOR with Java TCP communicationsnn2.Comparing JSOR to Java Sockets Direct Protocol (SDP) communicationsnn3.JSOR features and designnn3.1 JSOR Desginnn3.2 JSOR Zero copy functionnn4...
HP Socket通信框架开发
HP-Socket是一套通用的<em>高性能</em>TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。
可靠UDP传输(java)
实现<em>可靠</em>UDP通信,基于java实现。适合游戏,im使用
使用不可靠的UDP设计可靠的文件传输协议
一、了解UDP协议一些具体细节(可以直接跳到二、三看协议设计部分) nUDP协议的工作是将待发送的<em>网络</em>数据流量压缩成数据报的形式,然后由服务器端发送给客户端。但是UDP协议是面向无连接的,它只提供最大努力的服务,也就是说UDP协议不带有在发送端进行数据报分组,在接收端再对收到的报文进行重新 排序和组装的功能。这样一来,当一个数据报从发送端出发后,系统是不对报文进行顺序编号和检查的,在接收端也就无法感
HP-Socket-master.zip
HP-Socket是一套通用的<em>高性能</em>TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。 [1] 为了让使用者能方便快速地学习和使用HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量Demo示例(如:PUSH模型示例、PULL模型示例、PACK模型示例、性能测试示例以及其它编程语言示例)。HP-Socket当前<em>支持</em>Windows和Linux平台。 [1]
为何说TCP是可靠连接而UDP是不可靠连接
首先看一下TCP协议的报头:rnrn     rn    而UDP协议的报头大概如下:rnrn    rnrnrnrnrn     可以很明显的看出来,TCP的报头多了好多项,顺序号、应答号等等。rnrn     在TCP协议中使用了接收确认和重传机制。这样每一次信息的传输都经过了像三次握手那样的一个过程,使得每一个信息都能保证到达,是<em>可靠</em>的。rnrn     而UDP是尽力传送,没有应答和重传机
基于HP_Socket框架的socket通讯源码
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 此源码为基于HP_Socket框架的socket通讯源码。方便二次开发。省去研究框架的时间
设计一种基于UDP的可靠传输协议
设计一种基于UDP的<em>可靠</em>传输协议
udp如何实现可靠性传输?
如何用<em>udp</em>实现<em>可靠</em>性传输,虽然现在有几个比较成熟的开源库,但是知其所以然还是有必要的。
一个C#高并发通讯组件
一个c#写的高并发组件 据作者测试 使用普通电脑 本机模拟 可以达到上万的高并发 给大家提供思路 抛砖引玉
可靠的UDP协议--QUIC协议
QUIC是一种新的传输 方式,与TCP相比可以减少延迟。 表面上,QUIC与在UDP上实现 的TCP + TLS + HTTP /2非常相似。由于TCP是在操作系统内核和中间件固件中实现的,所以对TCP进行重大改变几乎是不可能的。但是,由于QUIC是建立在UDP之上的,所以没有这样的限制。nnQUIC相比于上述介绍的HTTP、HTTPS和HTTP2协议最大的不同就在于,其传输层采用的是UDP协议...
如何让UDP变得靠谱一些(增加UDP的可靠性)
最经在写一个聊天系统,用到了UDP协议,但是要给UDP增加一些<em>可靠</em>性,终于在UNP这本书中找到了些许实现的思想,特来写写博客,与大伙交流一下思想,写的不够深入只是实现了书中所写,欢迎拍砖和留言交流!!!!!nnnUNP书中采用的sigsetjmp  和siglongjmp来避免 由于竟态 导致的SIGALRMnn我采用的是pselect中注册了SIGALRM信号进行信号的避免同时还做到了
协议-基于UDP的可靠数据传输协议的实现分析(5)-可靠性怎么保证
n发送方的处理:1) 包发送确认后,由于还没有收到确认,先缓存2) 收到确认包后,从缓存中删除发送的包3) 接收方将丢失的包通知过来,或者超过一定的时候,若还没有收到确认的包,进行重传(注意,这个由接收线程触发)接收方的处理:1) 接收到包的数据,先将数据放到缓存中,a. 若有丢包现象,通知发送方,同时记录丢失的包 b.若是重传的包,从丢失的列表中删除2) 发送确认包3) 丢失的包,超时会让发送方...
C语言socket编程实现网络数据传输
一些简单的C语言socket编程方法,还要大于20个字啊~~~~~~~~~~~
TARS-PHP:PHP构建高性能RPC框架
内容来源:2018 年 5 月 19 日,阅文集团高级开发工程师梁晨在“PHPCon China 2018 技术峰会”进行《TARS-PHP:PHP构建<em>高性能</em>RPC框架》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。阅读字数:3570 | 9分钟阅读获取嘉宾演讲视频及PPT: http://suo.im/4CYv7H摘要本次分享将介绍<em>高性能</em>...
网络程序设计——6.支持多协议多服务的服务器设计和实现
一、实验要求nn熟练掌握多协议多服务服务器的设计和实现方法。nn二、实验步骤nn1.super.cnnnint main(int argc, char *argv[]){n struct service *psv,n *fd2sv[NOFILE];n int fd, nfds;n fd_set afds, rfds;nn switch(arg...
参考资料 | 用python实现基于UDP的可靠大文件传输
文件分片传输:rn[代码笔记] python 之<em>网络</em>编程: 使用<em>udp</em> 发送音频文件rn超时重传:rnPython3.x:简单时间调度Timer(间隔时间执行)rnvscode使用:rn非常全的VsCode快捷键rnpython全局变量与局部变量:rnPython语法基础——关于全局变量与局部变量rn进度条:rnPython 2 &amp;amp;amp; Python 3打印程序执行进度rnrn...
UDP协议的不可靠
UDP协议的不<em>可靠</em>问题主要体现在哪些方面?rn⑴当客户发送请求报文后,等待服务器的应答,客户进程收到一个应答后,就将其存放到该套接字的接收缓冲区中,此时,如果刚好有其他进程给该客户的这个端口地址发送了一个数据报,则客户的套接字会误以为是服务器的应答,也会将其存放到这个接收缓冲区中。这样在客户的接收缓冲区中会出现噪声数据。rn⑵当客户发送请求报文后,等待服务器的应答,但是由于UDP协议是不<em>可靠</em>的,数
UDP数据包可靠传输实现方案
本文的主要工作是解决网关B下主机和网关C下主机之间的<em>udp</em>数据包<em>可靠</em>传输问题,采用基于<em>udp</em>的<em>可靠</em>传输协议UDT来实现<em>udp</em>数据包的<em>可靠</em>传输。网关B下的客户端A是发送<em>udp</em>数据包的请求端,网关C下的服务器D是<em>udp</em>数据包的接收端,我们要做的工作就是实现主机A与D通信的<em>udp</em>数据包在网关B和C之间的卫星<em>网络</em>(项目实验环境)传输过程中<em>可靠</em>。
Socket高可靠性数据传输
在计算机<em>网络</em>中,TCP/IP保证了数据的<em>可靠</em>性传输,但是该<em>可靠</em>性传输时建立在链路可用的情况下的,也就是说在链路可用的情况下,该协议可用保证数据<em>可靠</em>的传输到对端。nnsocket就是在TCP/IP协议(当然还包含其他协议)之上的更高层次的系统API,socket底层使用了TCP/IP来保证了链路在可用的情况下,数据<em>可靠</em>的传输到对端,那么应用层在使用socket的时候读写数据的时候就一定能保证数据<em>可靠</em>...
基于UDP协议可靠传输协议QUIC协议和golang server代码和client代码
一. QUIC 的基本特点基于UDP的多路传输(单连接下); n极低的等待时延(相比于TCP的三次握手); n快速迭代更新; n开源于Chromium项目中。 n首先,QUIC为 传输层 协议,与TCP、UDP、SCTP同级。所以肯定会 在一定范围内 同现有的传输层协议构成竞争关系。二. 为什么不用TCPTCP由于基于操作系统内核实现,发展速度极慢,现有的TCP Fast Open实现等等虽然早已存
基于UDP的网络群聊系统
为什么用UDP?UDP是一个无连接的,不<em>可靠</em>的协议。 n发送端的UDP协议层只把应用层传来的数据封装成端给IP协议层就完成任务了。 n如果因为<em>网络</em>故障无法发送到对方,UDP协议层也不会给应用层返回任何错误信息。 n那么,为什么用UDP协议? n很明显简单,快捷。 n一般UDP协议的应用程序实现都比较简单,只是发送一些对<em>可靠</em>性要求不高的消息。数据的传输方向软件大体架构 n主要接口client: nse
【开源下载】基于TCP网络通信的自动升级程序c#源码(基于.networkcomms2.3.1)
本程序使用开源的来自英国的networkcomms2.3.1<em>网络</em>通讯框架(c#语言编写) 使用networkcomms框架作为工作中的主要编程框架1年多的时间了,networkcomms的有优美、稳定深深打动了我,基于此框架开发了不少程序,特别的稳定。 networkcomms框架由英国剑桥的2位工程师开发,<em>支持</em>.net2.0以上平台,原生态的<em>支持</em>xamarion.android(安卓),xamarin.ios,以及蓝牙等多平台开发。 networkcomms2.3.1版本通讯框架大家可以从此文中下载 networkcomms<em>网络</em>通讯框架学习 networkcomms目前的最新版本是V3.0.2
开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等
开源基于asio的<em>网络</em><em>通信框架</em>asio2,<em>支持</em>TCP,UDP,HTTP,RPC,SSL,跨平台,<em>支持</em><em>可靠</em>UDP,<em>支持</em>TCP自动拆包,TCP数据报模式等nnnnC++开发<em>网络</em>通信程序时用asio是个不错的选择,但asio本身是一套函数集,自己还要处理诸如“通信线程池管理、连接及生命周期管理、多线程收发数据的同步保护等”。因此这里对asio进行了一层封装,大大简化了对asio的使用。代码使用了C++...
c++实现基于停等协议的可靠udp传输的即时通讯系统(MFC)
用c++ 的基础<em>udp</em> API实现了停等协议,在应用层实现了<em>可靠</em><em>udp</em>传输,用MFC编写界面,带文档,可用于计算机<em>网络</em>课程设计
udp可靠传输那些事之游戏篇
这篇文章是<em>udp</em><em>可靠</em>传输那些事的续篇,针对<em>udp</em><em>可靠</em>传输在游戏类的应用的优点和缺点以及原理,进行了详细的分析.
网络调试TCPUDP本地调试助手功能强大,好用!
自己一直在用的TCP调试助手,非常好用,在网上找了很久才找到的。
c++ 可靠udp协议 reliableudp
<em>udp</em>本身是一种无连接的传输协议,不能够保证数据的<em>可靠</em>传输。但是可以通过一定的方法控制,做到数据的<em>可靠</em>传输;此代码仅作学习使用。
利用Java实现UDP通信
UDP简介UDP的全称为User Datagram Protocol,用户数据报协议,是除TCP外的另一种传输层协议。相比于TCP,UDP的速度更快,但它不<em>可靠</em>。当发送UDP数据时,无法知道数据是否会到达,也不知道数据的各个部分是否会以发送的顺序到达。 nJava将UDP的实现分为两个类:DatagramPacket与DatagramSocket。DatagramPacket类将数据填充到UDP包中
跨年呈献:HP-Socket for Linux 1.0 震撼发布
HP-Socket是一套通用的<em>高性能</em>TCP/UDP/HTTP <em>通信框架</em>,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。HP-Socket目前<em>支持</em>Windows和Linux平台。
分享一个Linux C++消息通信框架TCPSHM
由于本人从事行业关系,Linux环境下的低延迟通信是我关注的技术之一。要达到极端的低延迟,当然同机器内IPC比<em>网络</em>通信快,而Linux IPC方式中无疑是共享内存延迟最低。不过相对于TCP这种通用的通信方式来说,共享内存缺少了一些控制层的协议,比如进程A和B通过一个基于共享内存的消息队列通信,A很难知道队列另一端的B是否存在,具体的说就是基于共享内存的简单消息队列缺少了连接建立和断开的控制。另一方...
HP-Socket-3.2.1开源正式版,内含易语言静态库
HP-Socket 是一套通用的<em>高性能</em> TCP/UDP Socket 组件,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,上层应用不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握组件的设计思想和使用方法,特此精心制作了大量 Demo 示例,包括 PUSH 模型示例、PULL模型示例和性能测试示例等。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台<em>支持</em>。
局域网高效实现大数据的可靠,无错传输
大数据<em>可靠</em>传输效率一直是一个问题,使用tcp实现<em>可靠</em>传输效率太低不能被采用。我尝试封装<em>udp</em>来实现高效<em>可靠</em>大数据传输。我查看过enet和rdt的利用<em>udp</em>实现的封装,在<em>网络</em>环境不好的情况下基本不能使用,比tcp还要慢,内部实现机制出现了问题。我有一个思想实现封装,供大家参考和测试,源代码我也会完善封装。nn服务端:数据map(序列号,数据对象(数据,是否确认收到标记))列表一个容纳发送的数据(带有...
EditPlus3.12下载
亲测。可以用的EditPlus+Text+Editor+3.12+官方原版+注册机 相关下载链接:[url=//download.csdn.net/download/spkly/2022712?utm_source=bbsseo]//download.csdn.net/download/spkly/2022712?utm_source=bbsseo[/url]
数据库开发教程 软件调试下载
这里包含两个文件,其中一个是数据库开发教程,另一个是软件调试,希望大家有所收获 相关下载链接:[url=//download.csdn.net/download/zouheliang/2444679?utm_source=bbsseo]//download.csdn.net/download/zouheliang/2444679?utm_source=bbsseo[/url]
清华大学VLSI设计导论下载
清华大学VLSI设计导论课件,包括8章内容。这是第二章:。 相关下载链接:[url=//download.csdn.net/download/shijiezhiai/2587919?utm_source=bbsseo]//download.csdn.net/download/shijiezhiai/2587919?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链可靠 高性能云计算
我们是很有底线的