HP-Socket 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
HP-Socket 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
HP-Socket 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包
开源组织
地区 国产
投 递 者 伤神小怪兽
适用人群 未知
收录时间 2013-03-25

软件简介

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前支持 Windows 和 Linux 平台。

HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性:

通用性

  • HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。

  • HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了HP-Socket的接口规范都可以无缝整合 HP-Socket。

易用性

  • 易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。

  • HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。

  • HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。

高性能

  • Server 组件:基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。

  • Agent 组件:Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。

  • Client 组件:基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。

伸缩性

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

工作流程

  1. 创建监听器对象

  2. 创建组件对象(并绑定监听器)

  3. 启动组件

  4. 连接远程主机(仅用于Agent组件)

  5. 处理通信事件(OnConnect/OnReceive/OnClose ......)

  6. 停止组件(可选,第7步销毁组件对象前会先停止组件)

  7. 销毁组件对象

  8. 销毁监听器对象

Agent Workflow

示例代码

  • C++

    #include <hpsocket/HPSocket.h>/* Listener Class */
    class CListenerImpl : public CTcpPullServerListener
    {
    
    public:
    	// 5. process network events
    	virtual EnHandleResult OnPrepareListen(ITcpServer* pSender, SOCKET soListen);
    	virtual EnHandleResult OnAccept(ITcpServer* pSender, CONNID dwConnID, UINT_PTR soClient);
    	virtual EnHandleResult OnHandShake(ITcpServer* pSender, CONNID dwConnID);
    	virtual EnHandleResult OnReceive(ITcpServer* pSender, CONNID dwConnID, int iLength);
    	virtual EnHandleResult OnSend(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength);
    	virtual EnHandleResult OnClose(ITcpServer* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode);
    	virtual EnHandleResult OnShutdown(ITcpServer* pSender);
    };
    
    int main(int argc, char* const argv[])
    {
    	// 1. Create listener object
    	CListenerImpl s_listener;
    	// 2. Create component object (and binding with listener object)
    	CTcpPullServerPtr s_pserver(&s_listener);
    	
    	// 3. Start component object
    	if(!s_pserver->Start("0.0.0.0", 5555))
    		exit(1);
    	
    	/* wait for exit */
    	// ... ... 
    	
    	// 6. (optional) Stop component object
    	s_pserver->Stop()
    
    	return 0;
    	
    	// 7. Destroy component object automatically
    	// 8. Destroy listener object automatically
    }

     

  • C

    #include <hpsocket/HPSocket4C.h>// 5. process network events
    EnHandleResult __HP_CALL OnConnect(HP_Agent pSender, HP_CONNID dwConnID);
    EnHandleResult __HP_CALL OnReceive(HP_Agent pSender, HP_CONNID dwConnID, int iLength);
    EnHandleResult __HP_CALL OnSend(HP_Agent pSender, HP_CONNID dwConnID, const BYTE* pData, int iLength);
    EnHandleResult __HP_CALL OnClose(HP_Agent pSender, HP_CONNID dwConnID, En_HP_SocketOperation enOperation, int iErrorCode);
    EnHandleResult __HP_CALL OnShutdown(HP_Agent pSender);
    
    int main(int argc, char* const argv[])
    {
    	HP_TcpPullAgentListener s_listener;
    	HP_TcpPullAgent s_agent;
    
    	// 1. Create listener object
    	s_listener	= ::Create_HP_TcpPullAgentListener();
    	// 2. Create component object (and binding with listener object)
    	s_agent		= ::Create_HP_TcpPullAgent(s_listener);
    	
    	/* Set listener callbacks */
    	::HP_Set_FN_Agent_OnConnect(s_listener, OnConnect);
    	::HP_Set_FN_Agent_OnSend(s_listener, OnSend);
    	::HP_Set_FN_Agent_OnPullReceive(s_listener, OnReceive);
    	::HP_Set_FN_Agent_OnClose(s_listener, OnClose);
    	::HP_Set_FN_Agent_OnShutdown(s_listener, OnShutdown);
    	
    	// 3. Start component object
    	if(!::HP_Agent_Start(s_agent, "0.0.0.0", TRUE))
    		exit(1);
    	
    	// 4. Connect to dest host
    	::HP_Agent_Connect(s_agent, "remote.host.1", REMOTE_PORT_1, nullptr);
    	::HP_Agent_Connect(s_agent, "remote.host.2", REMOTE_PORT_2, nullptr);
    	::HP_Agent_Connect(s_agent, "remote.host.3", REMOTE_PORT_3, nullptr);
    	
    	/* wait for exit */
    	// ... ... 
    	
    	// 6. (optional) Stop component object
    	::HP_Agent_Stop(s_agent)
    
    	// 7. Destroy component object
    	::Destroy_HP_TcpPullAgent(s_agent);
    	// 8. Destroy listener object
    	::Destroy_HP_TcpPullAgentListener(s_listener);
    	
    	return 0;
    }

     

  • 基础组件
    基础组件

  • SSL组件

  • HTTP组件

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

BOM

器件型号 器件厂商 更多信息
{{o.mpn}} {{o.mfr}} 查看

评论

点击加入讨论🔥(560) 发布并加入讨论🔥
发表了资讯
02/01 12:57

高性能跨平台网络通信框架 HP-Socket v6.0.1

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4592706661.html 下载地址 : https://github.com/ldcsaa/HP-Socket v6.0.1 更新 一、主要更新 优化Linux通信组件多路复用处理架构,避免“惊群”问题,提升性能。 自动为 HP-Socket 工作线程设置唯一线程名称,方便跟踪调试。 TCP Client/Agent 以同步方式连接服务端时,支持通过 SetSyncConnectTimeout() 设置连接超时时间。 二、第三方库更...

2
1
发表了资讯
01/21 00:46

高性能跨平台网络通信框架 HP-Socket v5.9.5

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4478351216.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.9.5 更新 一、主要更新 问题修复:由于 v5.9.4 版本升级了 KCP 导致 UDP ARQ 组件不可用 二、第三方库更新 openssl 升级到 3.0.12 版本 llhttp 升级到 9.1.3 版本 brotli 升级到 1.1.0 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件...

2
4
发表了资讯
01/02 08:55

高性能跨平台网络通信框架 HP-Socket v5.9.4

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4478351216.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.9.4 更新 一、主要更新 openssl 升级到 3.0.12 版本 llhttp 升级到 9.1.3 版本 brotli 升级到 1.1.0 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件...

1
0
发表了资讯
2023/08/13 06:13

高性能跨平台网络通信框架 HP-Socket v5.9.3

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4478351216.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 663903943 v5.9.3 更新 一、主要更新 问题修复:通过 POST/PUT 等带有请求内容的 HTTP 方法升级 websocket 协议时,可能会导致 HTTP Server 异常 UDP Client/Server 之间的单个心跳包发送失败不会立刻断开连接,只检测心跳是否超时来判断是否要断开连接...

1
2
发表了资讯
2023/07/02 15:01

高性能跨平台网络通信框架 HP-Socket v5.9.2 发布

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4062394468.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.9.2 更新 一、主要更新 HTTP Cookie 请求和响应头 ‘Cookie’、‘Set-Cookie’ 支持不区分大小写 更好支持 GCC 11 编译器 二、第三方库更新 openssl 升级到 1.1.1u 版本 mimalloc 升级到 1.8.2 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件...

0
2
发表了资讯
2023/01/30 23:58

高性能跨平台网络通信框架 HP-Socket v5.9.1 发布

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-4062394468.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 663903943 v5.9.1 更新 一、主要更新 更新流式压缩/解压相关的若干 API,支持分段压缩/解压(参考:Change-APIs.txt) 更新 SSL 模块,支持 OpenSSL 3.0 二、第三方库更新 llhttp 升级到 8.1.0 版本 zlib 升级到 1.2.13 版本 openssl 升级到 1.1.1s 版...

0
3
发表了资讯
2022/04/20 08:26

高性能跨平台网络通信框架 HP-Socket v5.8.8

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-3212224964.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.8.8 更新 一、主要更新 Client/Agent 连接服务端时支持指定主机名称,格式:<hostaddress>[^<hostname>],其中 ^<hostname> 可选。应用场景之一:通过代理服务器向目标服务器传递 SSL SNI hostname 增加字符编码转换系列函数(参考:Chang-Log.txt),支持指定源字符串长...

0
4
发表了资讯
2022/03/09 08:57

高性能跨平台网络通信框架 HP-Socket v5.8.7

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2981037931.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.8.7 更新 一、主要更新 优化垃圾对象回收检测机制,提高通信组件在高负载、高并发场景的健壮性 支持 VS 2022 开发环境 二、第三方库更新 mimalloc 升级到 1.7.5 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件...

2
9
发表了资讯
2022/01/20 09:12

高性能跨平台网络通信框架 HP-Socket v5.8.6

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2765655567.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.8.6 更新 一、主要更新 增加 ZLib/GZip、Brotil 流式压缩/解压组件:IHPCompressor 和 IHPDecompressor 优化垃圾对象回收检测机制,提高通信组件在高负载、高并发场景的健壮性 二、第三方库更新 openssl 升级到 1.1.1m 版本 llhttp 升级到 6.0.6 版本 mimalloc 升级到 ...

8
13
发表了资讯
2021/09/07 09:06

高性能网络通信框架 HP-Socket v5.8.5

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2765655567.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 v5.8.5 更新 一、主要更新 增加线程池监听器接口 IHPThreadPoolListener,监听线程池生命周期事件 消除隐患:Client 系列组件用作函数局部变量时,如果使用不当可能会在销毁 Client 对象时崩溃 Windows 版支持通过指定平台工具集编译 增加 MS...

5
8
发表了资讯
2021/07/20 08:57

高性能网络通信框架 HP-Socket v5.8.4

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2704901774.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 v5.8.4 更新 一、主要更新 增加全局函数:SYS_Calloc()、SYS_Alloca() TCP 系列组件增加接口方法:SetNoDelay()、IsNoDelay() 问题修复:mimalloc 在 NDK 平台下触发 segment fault 段错误 二、第三方库更新 mimalloc 升级到 1.7.2 版本 llht...

5
7
2021/05/17 10:09

高性能网络通信框架 HP-Socket v5.8.3

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2571462318.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.8.3 更新 一、Bug Fix 某些通信组件在 ARM32 平台下触发 segment fault 段错误 Linux 平台的 UDP Client 通信组件在某些特殊场景下触发 segment fault 段错误 ARQ UDP 组件发送数据时可能发生死锁 二、第三方库更新 mimalloc 升级到 1.7.1 版本 llhttp 升级到 6.0.2 版本...

2
9
2021/03/16 09:34

高性能跨平台网络通信框架 HP-Socket v5.8.2

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2571462318.html 下载地址 : https://github.com/ldcsaa/HP-Socket v5.8.2 更新 一、Bug Fix 某些通信组件在 ARM32 平台下触发 segment fault 段错误 Linux 平台的 UDP Client 通信组件在某些特殊场景下触发 segment fault 段错误 二、第三方库更新 mimalloc 升级到 1.7.0 版本 llhttp 升级到 4.0.0 版本 OpenSSL 升级到 1.1.1j 版本 HP-Soc...

10
10
2021/01/27 09:47

高性能网络通信框架 HP-Socket v5.8.1

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2571462318.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 v5.8.1 更新 一、第三方库更新 HTTP 解析器:llhttp 取代 http_parser 内存分配器:mimalloc 取代 jemalloc OpenSSL 升级到 1.1.1i 版本 二、其他更新 库公开头文件移到 include/hpsocket 目录 Windows目录结构调整:Common/Src 改为 Src/Co...

9
10
2020/11/25 09:59

高性能网络通信框架 HP-Socket v5.7.3

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2287339564.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 本次更新增加 UDP Node 组件,新增大量 API ! v5.7.3 更新 一、新增组件:UDP Node UDP Node 没有“连接”的概念,可以与任意地址相互收发数据 UDP Node 支持三种运行模式:单播、组播和广播 增加 UDP Node 组件示例 Demo ‘TestUDPNode’ ...

6
13
2020/05/08 09:46

高性能网络通信框架 HP-Socket v5.7.2

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2287339564.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 本次更新增加 UDP Node 组件,新增大量 API ! v5.7.2 更新 一、新增组件:UDP Node UDP Node 没有“连接”的概念,可以与任意地址相互收发数据 UDP Node 支持三种运行模式:单播、组播和广播 增加 UDP Node 组件示例 Demo ‘TestUDPNode’ ...

18
32
2020/01/06 10:09

【新年呈献】高性能网络通信框架 HP-Socket v5.7.1

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2287339564.html 下载地址 : https://github.com/ldcsaa/HP-Socket 本次更新增加 UDP Node 组件,新增大量 API ! v5.7.1 更新 一、新增组件:UDP Node UDP Node 没有“连接”的概念,可以与任意地址相互收发数据 UDP Node 支持三种运行模式:单播、组播和广播 增加 UDP Node 组件示例 Demo ‘TestUDPNode’ UDP Node 工作流程 二、API 更新...

16
27
2019/12/10 10:30

HP-Socket v5.6.4 发布,高性能网络通信框架

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2257033571.html 下载地址 : https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 本次更新主要对 SSL、HTTP 和 UDP 系列组件作了优化和调整! v5.6.4 更新 一、SSL 组件更新 所有 SSL 组件增加以下接口方法支持加载内存证书 1) Server:SetupSSLContextByMemory(), AddSSLContextByMemory() 2) Agent:SetupSSLContextBy...

18
32
2019/12/04 10:52

HP-Socket v5.6.3,高性能跨平台网络通信框架

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2257033571.html 下载地址 : https://github.com/ldcsaa/HP-Socket 本次更新主要对 SSL、HTTP 和 UDP 系列组件作了优化和调整! v5.6.3 更新 一、SSL 组件更新 所有 SSL 组件增加以下接口方法支持加载内存证书 1) Server:SetupSSLContextByMemory(), AddSSLContextByMemory() 2) Agent:SetupSSLContextByMemory() 3) Client:SetupSS...

11
21
2019/11/05 09:40

高性能跨平台网络通信框架 HP-Socket v5.6.2 发布

项目主页 : http://www.oschina.net/p/hp-socket 开发文档 : https://www.docin.com/p-2257033571.html 下载地址 : https://github.com/ldcsaa/HP-Socket 本次更新主要对 SSL、HTTP 和 UDP 系列组件作了优化和调整! v5.6.2 更新 一、SSL 组件更新 所有 SSL 组件增加以下接口方法支持加载内存证书 1) Server:SetupSSLContextByMemory(), AddSSLContextByMemory() 2) Agent:SetupSSLContextByMemory() 3) Client:SetupSS...

5
24
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
OpenSSL拒绝服务漏洞
不可达退出条件的循环(无限循环)
OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 根据OpenSSL官方公告描述,漏洞由于计算模平方根的 BN_mod_sqrt() 函数包含错误导致,该错误可能导致它对于非素数模数无限循环。当解析部分公钥或证书时,会使用此函数。由于证书解析发生在证书签名验证之前,攻击者可以通过制作恶意证书,并在解析外部证书的过程中使用该证书,最终导致拒绝服务。
CVE-2022-0778 MPS-2022-5555
2022-08-08 19:05
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
560 评论
2.4K 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部