高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2 发布

DuMiYue 2016-12-27 06:32:22
加精

  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。
  为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。


* HP-Socket 官方网站:http://www.jessma.org
* HP-Socket 项目主页:http://www.oschina.net/p/hp-socket
* HP-Socket 开发文档:http://www.oschina.net/p/hp-socket/doc
------------------------------------------------------------------------------------------------
【通用性】
  1、HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。
  2、HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。

【易用性】
  1、易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。
  2、HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。
  3、HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。

【高性能】
  Client 组件:基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。
  Server 组件:基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。
  Agent 组件:对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。

【伸缩性】
  应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。
------------------------------------------------------------------------------------------------

*** v4.1.2 更新 ***

> WebSocket 支持:
-----------------
1、所有 HTTP 组件增加 WebSocket 方法:
1) SendWSMessage(): 发送 WebSocket 数据包
2) GetWSMessageState(): 获取当前 WebSocket 状态
2、所有 HTTP 组件监听器增加 WebSocket 事件:
1) OnWSMessageHeader(): WebSocket 数据包头通知
2) OnWSMessageBody(): WebSocket 数据包体通知
3) OnWSMessageComplete(): WebSocket 数据包完成通知
3、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 支持 WebSocket

> 增加 HTTP Sync Client 通信组件:
-----------------
1、HTTP Sync Client 实现同步 HTTP 通信,不需要事件监听器
2、HTTP Sync Client 组件类: CHttpSyncClient、CHttpsSyncClient
3、HTTP Sync Client 实现接口: ITcpClient / IHttpSyncRequester
4、示例 Demo TestEcho-Http 和 TestEcho-Http-4C 提供 HTTP Sync Client 示例

> 其它更新:
-----------------
1、采用新环形缓冲区算法提高异步操作安全性
2、采用延时释放策略提高 HTTP 异步操作安全性

------------------------------------------------------------------------------------------------

*** v4.0.1 更新 ***

> 增加 HTTP 系列通信组件:
-----------------


1、新增 HTTP Server 组件:
1) 组件类: CHttpServer、CHttpsServer
2) 实现接口: ITcpServer / IComplexHttpResponder
3) 监听器接口: IHttpServerListener
2、新增 HTTP Agent 组件:
1) 组件类: CHttpAgent、CHttpsAgent
2) 实现接口: ITcpAgent / IComplexHttpRequester
3) 监听器接口: IHttpAgentListener
3、新增 HTTP Client 组件:
1) 组件类: CHttpClient、CHttpsClient
2) 实现接口: ITcpClient / IHttpRequester
3) 监听器接口: IHttpClientListener
4、新增 HTTP 示例 Demo:
1) TestEcho-Http (源代码)
2) TestEcho-Http-4C (4C LIB / 4C DLL)
5、Http 监听器:
1) 监听器事件:
OnMessageBegin() : 【可选】开始解析
OnRequestLine() : 【可选】请求行解析完成(仅用于 HTTP 服务端)
OnStatusLine() : 【可选】状态行解析完成(仅用于 HTTP 客户端)
OnHeader() : 【可选】请求头通知
OnHeadersComplete() : 【必须】请求头完成通知
OnBody() : 【必须】请求体报文通知
OnChunkHeader() : 【可选】Chunked 报文头通知
OnChunkComplete() : 【可选】Chunked 报文结束通知
OnMessageComplete() : 【必须】完成解析通知
OnUpgrade() : 【可选】升级协议通知
OnParseError() : 【必须】解析错误通知
2) 监听器事件返回值(EnHttpParseResult):
HPR_OK : 继续解析
HPR_SKIP_BODY : 跳过当前请求 BODY(仅用于 OnHeadersComplete 事件)
HPR_UPGRADE : 升级协议(仅用于 OnHeadersComplete 事件)
HPR_ERROR : 终止解析,断开连接
> 组件接口调整:
-----------------
1、IServer 和 IAgent 组件的所有监听器回调方法增加‘事件源’参数,如:OnShutdown() -> OnShutdown(T* pSender)
2、IClient 组件的所有监听器回调方法增加‘连接ID’参数,如:OnHandShake(IClient* pClient) -> OnHandShake(T* pSender, CONNID dwConnID)
3、IServer 和 IAgent 接口增加接口方法: Get/SetMaxConnectionCount() 用于设置最大连接数,最大连接数默认:10000
4、OnHandShake() 事件触发规则调整:非 SSL 组件在 OnConnect() 事件后也触发 OnHandShake() 事件,使 SSL 组件和 SSL 组件处理流程一致
5、HPSocket4C 增加 PACK 组件监听器的创建、销毁方法,新版本必须使用下列方法创建、销毁 PACK 组件监听器:
1) Create_HP_TcpPackServerListener / Destroy_HP_TcpPackServerListener
2) Create_HP_TcpPackAgentListener / Destroy_HP_TcpPackAgentListener
3) Create_HP_TcpPackClientListener / Destroy_HP_TcpPackClientListener
6、SSL 组件支持 SNI
1) SSL 初始化方法 HP_SSL_Initialize(),增加 SNI 回调函数指针参数
2) 新增方法 HP_SSL_AddServerContext(),用于 加载 SNI 主机证书

> 其他更新:
-----------------
1、IServer 和 IAgent 组件采用 Ring Pool 取代 R/W Lock + Map 维护活动连接,提升读写和并发性能
2、更新所有 Demo 示例代码

------------------------------------------------------------------------------------------------

*** v3.5.1 更新 ***

> 增加 SSL 系列通信组件:
-----------------
1、新增 SSL PUSH 组件:CSSLServer、CSSLAgent、CSSLClient
2、新增 SSL PULL 组件:CSSLPullServer、CSSLPullAgent、CSSLPullClient
3、新增 SSL PACK 组件:CSSLPackServer、CSSLPackAgent、CSSLPackClient
4、SSL Server 实现 ITcpServer 接口,SSL Agent 实现 ITcpAgent 接口,SSL Client 实现 ITcpClient 接口
5、启动 SSL 通信组件前需要调用 HP_SSL_Initialize() 函数初始化 SSL 全局环境参数
6、通信结束后调用 HP_SSL_Cleanup() 函数清理 SSL 全局运行环境
7、新增 SSL 相关示例 Demo:
1) TestEcho-SSL (源代码)
2) TestEcho-SSL-Pack (DLL / 4C DLL)
3) TestEcho-SSL-4C (4C LIB)
4) TestEcho-SSL-PFM (LIB)


> 组件接口调整:
-----------------
1、ITcpServerListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)
2、ITcpAgentListener 接口增加 SSL 握手成功事件:OnHandShake(CONNID dwConnID)
3、ITcpClientListener 接口增加 SSL 握手成功事件:OnHandShake(IClient* pClient)
4、枚举类型 EnSocketError 增加‘SSL 环境未就绪’错误代码 SE_SSL_ENV_NOT_READY
5、增加枚举类型:EnSSLSessionMode(SSL 工作模式),EnSSLVerifyMode(SSL 验证模式)
6、HPSocket-SSL DLL 主要头文件:SocketInterface-SSL.h,HPSocket-SSL.h
7、HPSocket4C-SSL DLL 主要头文件:HPSocket4C-SSL.h
8、Tcp Pack 系列组件可设置的最大包长调整为 4194303/0x3FFFFF 字节
9、Tcp Pack 系列组件的有效包头标识取值范围调整为 0 ~ 1023/0x3FF

> 增加静态库工程:
-----------------
1、新增项目工程 HPSocketLIB 和 HPSocketLIB4C 用于编译 HPSocket 和 HPSocket4C 静态库
2、静态库与动态库的使用方式一致(请参考示例 Demo:TestEcho-SSL-4C 和 TestEcho-SSL-PFM)
3、使用 HPSocket 或 HPSocket4C 静态库时,需要在工程属性中定义预处理宏 -> HPSOCKET_STATIC_LIB
4、静态库目标文件不包含在发布包中(因为太大),如果需要请自行编译
------------------------------------------------------------------------------------------------

*** v3.4.1 更新 ***

> 增加 Tcp Pack 系列通信组件:
-----------------
1、Tcp Pack 系列组件保证每个 OnReceive 事件都向应用程序提供一个完整数据包
2、Tcp Pack 系列组件是 PUSH/PULL 模式的结合体,应用程序不必处理分包(如:PUSH)与数据抓取(如:PULL)
3、Tcp Pack 系列组件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用来设置最大包长和包头标识
4、CTcpPackServer 实现 ITcpServer 接口,CTcpPackAgent 实现 ITcpAgent 接口,CTcpPackClient 实现 ITcpClient 接口


> 组件接口调整:
-----------------
1、OnClose/OnError 合并为一个通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
2、枚举类型 EnSocketOperation 增加一个枚举值: SO_CLOSE = 5,标识关闭 Socket 操作
3、IServer 和 IAgent 接口删除接口方法: Get/SetRecvPolicy()
4、IServer 和 IAgent 接口删除接口方法: Get/SetMaxShutdownWaitTime()
------------------------------------------------------------------------------------------------
...全文
7530 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuzhifengtwo 2018-01-11
  • 打赏
  • 举报
回复
支持支持,!
DuMiYue 2017-01-18
  • 打赏
  • 举报
回复
高性能 TCP & UDP 通信框架 HP-Socket v4.1.3 发布 http://bbs.csdn.net/topics/392078587
ronal7do 2017-01-16
  • 打赏
  • 举报
回复
顶,学习,希望支持跨平台
道亦无名 2017-01-14
  • 打赏
  • 举报
回复
hugh_z 2016-12-30
  • 打赏
  • 举报
回复
6666666666666666
hugh_z 2016-12-29
  • 打赏
  • 举报
回复
6666666666666666
赵4老师 2016-12-29
  • 打赏
  • 举报
回复
搜“更新帝”
ljheee 2016-12-28
  • 打赏
  • 举报
回复
更新好快,支持~
ww_xp 2016-12-28
  • 打赏
  • 举报
回复
高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2 非常好用,正用在我的项目上。
叮小当 2016-12-28
  • 打赏
  • 举报
回复
期待支持IPV6 跨平台
老狼主 2016-12-28
  • 打赏
  • 举报
回复
一如既往,支持!
_风清扬 2016-12-28
  • 打赏
  • 举报
回复
牛逼了 word哥 ! 再顶一下
r502504878 2016-12-28
  • 打赏
  • 举报
回复
支持一个!
_风清扬 2016-12-28
  • 打赏
  • 举报
回复
强烈推荐这个库,非常好用,一直在用,稳定性和易用性非常好,我已经有两个项目在用了。 可以说HPSOCKET带我走进了服务器编程的世界,感谢HPSOCKET,感谢作者!!
yungao2 2016-12-28
  • 打赏
  • 举报
回复
期待linux版。。。。。
koman1983 2016-12-28
  • 打赏
  • 举报
回复
一直在关注,很不错的通讯框架
huooay 2016-12-28
  • 打赏
  • 举报
回复
继续努力加油
djese 2016-12-28
  • 打赏
  • 举报
回复
支持一下,这个不错的
李能鑫 2016-12-28
  • 打赏
  • 举报
回复
2017 期待跨平台
songjinxi123 2016-12-28
  • 打赏
  • 举报
回复
一直用的这个库,很好用,楼主辛苦了。
加载更多回复(12)
JAVA SOCKET 编程的经典之书,(中文版)里面的代码可直接复制使用! 目录: 第1章简介..........3 1.1 计算机网络,分组报文和协议..........3 1.2 关于地址..........6 1.3 关于名字..........8 1.4 客户端和服务器..........8 1.5 什么是套接字..........9 1.6 练习..........10 第2章基本套接字..........10 2.1 套接字地址..........10 2.2 TCP套接字..........17 2.2.1 TCP客户端..........17 2.2.2 TCP服务器端..........22 2.2.3 输入输出流..........26 2.3 UDP套接字..........28 2.3.1 DatagramPacket类..........28 2.3.2 UDP客户端..........30 2.3.3 UDP服务器端..........36 2.3.4 使用UDP套接字发送和接收信息..........38 2.4 练习..........40 第3章发送和接收数据..........41 3.1 信息编码..........42 3.1.1 基本整型..........42 3.1.2 字符串和文本..........48 3.1.3 位操作:布尔值编码..........50 3.2 组合输入输出流..........51 3.3 成帧与解析..........52 3.4 Java特定编码..........58 3.5 构建和解析协议消息..........59 3.5.1 基于文本的表示方法..........62 3.5.2 二进制表示方法..........65 3.5.3 发送和接收..........67 3.6 结束..........76 3.7 练习..........76 第4章进阶..........77 4.1 多任务处理..........77 4.1.1 Java 多线程..........78 4.1.2 服务器协议..........80 4.1.3 一客户一线程..........84 4.1.4 线程池..........86 4.1.5 系统管理调度:Executor接口..........89 4.2 阻塞和超时..........91 4.2.1 accept(),read()和receive()..........91 4.2.2 连接和写数据..........92 4.2.3 限制每个客户端的时间..........92 4.3 多接收者..........94 4.3.1 广播..........94 4.3.2 多播..........95 4.4 控制默认行为..........100 4.4.1 Keep-Alive..........100 4.4.2 发送和接收缓存区的大小..........101 4.4.3 超时..........101 4.4.4 地址重用..........102 4.4.5 消除缓冲延迟..........102 4.4.6 紧急数据..........103 4.4.7 关闭后停留..........103 4.4.8 广播许可..........103 4.4.9 通信等级..........104 4.4.10 基于性能的协议选择..........104 4.5 关闭连接..........104 4.6 Applets..........111 4.7 结束..........112 4.8 练习..........112 第5章 NIO..........112 5.1 为什么需要NIO?..........113 5.2 与Buffer一起使用Channel..........115 5.3 Selector..........118 5.4 Buffer详解..........125 5.4.1 Buffer索引..........125 5.4.2 创建Buffer..........126 5.4.3 存储和接收数据..........128 5.4.4 准备Buffer:clear(),flip(),和rewind()..........130 5.4.5 压缩Buffer中的数据..........132 5.4.6 Buffer透视:duplicate(),slice()等..........134 5.4.7 字符编码..........136 5.5 流(TCP)信道详解..........136 5.6 Selector详解..........139 5.6.1 在信道中注册..........139 5.6.2 选取和识别准备就绪的信道..........141 5.6.3 信道附件..........143 5.6.4 Selector小结..........144 5.7 数据报(UDP)信道..........144 5.8 练习..........149 1. 使用定长的写缓冲区改写TCPEchoClientNonblocking.java。..........149 2.使用Buffer和DatagramChannel编写一个回显客户端。..........149 第6章深入剖析..........149 6.1 缓冲和TCP..........152 6.2 死锁风险..........155 6.3 性能相关..........158 6.4 TCP套接字的生存周期..........158 6.4.1 连接..........158 6.4.2 关闭TCP连接..........164 6.5 解调多路复用揭秘..........167 6.6 练习..........169
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcpudp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。
本书所有的源代码可以通过http://www.tupwk.com.cn下载到,用户无需输入任何内容,即可使用本书中展示的所有技巧。
本书结构清晰,内容全面,由浅及深、注重实用,适合于初级和中级网络程序员、网络软件开发人员、网络管理员及广大计算机编程爱好者阅读。
第1章 net平台
1.1 net平台简介
1.1.1 什么是.net
1.1.2 net的功能
1.1.3 net的核心组件
1.2 net平台特点
1.3 net平台架构
1.4 本章小结
第2章 c#web编程基础
2.1 internet发展简史
2.1.1 www与internet
2.1.2 web的工作原理
2.1.3 超文本传输协议
2.2 web编程起步
2.2.1 html页面
2.2.2 html表单
2.2.3 静态和动态web页面
2.2.4 web的演化过程
2.3 netweb编程
2.3.1 aspnet
2.3.2 webforms
2.4 本章小结
第3章 基于asp.net的网络编程
3.1 webforms
3.1.1 创建第一个web窗体
3.1.2 在web窗体上添加控件
3.1.3 将控件与数据绑定
3.1.4 webforms的事件响应
3.2 服务器端控件
3.3 自定义控件
3.3.1 创建项目
3.3.2 将控件添加到工具箱
3.3.3 个性化控件
3.3.4 创建自定义设计器
3.3.5 测试控件
3.4 html控件
3.5 aspnet应用程序
3.5.1 什么是应用程序
3.5.2 配置web.config
3.5.3 编写global.asax
3.5.4 应用和会话
3.5.5 安全访问控制
3.6 本章小结
第4章 基于tcpudp协议的socket编程
4.1 hternet和socket简介
4.1.1 tcp协议简介
4.1.2 udp协议简介
4.1.3 端口简介
4.1.4 system.net名称空间
4.1.5 system.net.sockets名称空间
4.2 基于tcp协议的网络会话实例
4.2.1 服务器端编程
4.2.2 客户端编程
4.2.3 编译运行
4.3 基于tcp的p2p文件共享应用
4.3.1 qremotefilestream协议
4.3.2 qremotefilestreamserver类
4.3.3 qremotefilestreamproxy类
4.3.4 qfilesharingpeer类
4.3.5 p2p-gui程序的编写和编译运行
4.4 基于udp协议的网络会话实例
4.4.1 服务器端编程
4.4.2 客户端编程
4.4.3 编译运行
4.5 基于udp广播的自动收报机的实现
4.5.1 服务器和客户端的公共类
4.5.2 服务器端编程
4.5.3 客户端编程
4.5.4 编译运行
4.6 基于udp的客户一服务器聊天应用的实现
4.6.1 qtcpserversession类
4.6.2 qtcpserver类
4.6.3 聊天协议
4.6.4 qchatserver类
4.6.5 qchatclient类
4.6.6 编译和运行程序
4.7 网络资料的访问
4.7.1 代理的概念
4.7.2 访问网络资源的客户端程序
4.8 本章小结
第5章 远程访问
……
第6章 基于msmq的消息队列
第7章 电子邮件客户端系统
第8章 网络编程实用技巧示例
第9章 xmlwebservices编程
第10章 一个大整数计算的webserrices

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧