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

伤神小怪兽
 伤神小怪兽
发布于 2018年12月06日
收藏 53

HP-Socket

    HP-Socket提供以下几类组件,详细内容请参考《HP-Socket网络通信框架开发指南》:

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

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

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

v5.4.3 更新

一、HTTP 组件更新

  1. HTTP 组件可以手工启动 HTTP 通信,从而可以对 HTTP 通信执行 SOCKS 代理服务器设置等前置操作

  2. HTTP 组件(Server/Agent/Client)增加以下接口方法支持手工启动 HTTP 通信

    1) StartHttp():手工启动 HTTP 通信,当通信组件设置为非自动启动时,需要调用本方法启动 HTTP 通信
    2) SetHttpAutoStart():设置 HTTP 通信启动方式(默认:TRUE,自动启动)
    3) IsHttpAutoStart():获取 HTTP 通信启动方式

二、其他更新

  1. Bug 修复:UDP Server 在高并发场景下可能重复触发 OnAccept 事件

v5.4.2 更新

一、SSL 组件更新

  1. SSL 组件可以手工启动 SSL 握手,从而可以对 SSL/Https 通信执行代理服务器设置等前置操作

  2. SSL 组件(Server/Agent/Client)增加以下接口方法支持手工启动 SSL 握手

    1) StartSSLHandShake():手工启动 SSL 握手,当通信组件设置为非自动握手时,需要调用本方法启动 SSL 握手
    2) SetSSLAutoHandShake():设置通信组件握手方式(默认:TRUE,自动握手)
    3) IsSSLAutoHandShake():获取通信组件握手方式

二、其他更新

  1. 所有可能导致 Socket 关闭的组件接口方法都在 Socket 通信线程中异步触发 OnClose 事件

  2. Server 与 Agent 组件的 DIRECT 发送策略也支持通过 GetPendingDataLength() 方法实现流控

  3. Server 与 Agent 组件的 Disconnect() 方法不再支持‘非强制断开’(仍然保留bForce 参数),调用时都会强制断开

  4. OnSend 事件支持 三种同步策略

    1) OSSP_NONE:不同步(默认)
    2) OSSP_CLOSE:同步 OnClose
    3) OSSP_RECEIVE:同步 OnClose 和 OnReceive(只用于 TCP 组件)
  5. OpenSSL 版本升级到 1.1.0i 版本

v5.4.1 更新

一、加入线程池公共组件

  1. 加入 IHPThreadPool 线程池公共组件

  2. IHPThreadPool 主要方法

    1) Start:启动线程池
    2) Stop:关闭线程池
    3) Submit:提交任务
    4) AdjustThreadCount:调整线程池大小

二、接口更新

  1. IAgent 接口的 Connect() 方法增加参数 usLocalPort,连接时可绑定本地端口

  2. IClient 接口的 Start() 方法增加参数 usLocalPort,连接时可绑定本地端口

  3. IClient/IAgent/IServer 接口增加方法 IsConnected(),检测是否有效连接

三、其它更新

  1. 修复已知问题

  2. 性能优化

v5.3.2 更新

一、Linux版本更新

  1. Android NDK 支持:所有组件源码均可使用Android NDK编译,在Android平台上运行

  2. Bug修复:5.3.1版本中用dlopen()动态加载共享库失败

  3. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能

  4. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能

  5. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编

hp-socket for android

hp-socket for android

二、Windows版本更新

  1. 修复 C# SDK 关于 SSL 初始化失败 Bug

  2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能

三、其它更新

  1. http-parser 解析器升级到 2.8.1 版本

  2. OpenSSL 版本升级到 1.1.0h

  3. jemalloc 版本升级到 5.1.0 版本

v5.2.1 更新

一、发布包调整

  1. 版本号修订:Windows 和 Linux 发行版使用统一版本号

  2. 发布文件不再区分非 SSL DLL 和 SSL DLL,统一为 HPSocket DLL 和 HPSocket4C DLL

  3. 发布文件默认包含 SSL 和 HTTP 组件

  4. 如果想去除 SSL 或 HTTP 组件,可以分别定义 _SSL_DISABLED 或 _HTTP_DISABLED 宏重新编

新增 Linux SSL 组件

  1. Server: SSL Server, SSL Pull Server, SSL Pack Server

  2. Agent: SSL Agent, SSL Pull Agent, SSL Pack Agent

  3. Client: SSL Client, SSL Pull Client, SSL Pack Client

hp ssl

新增 Linux HTTP 组件

  1. Server: HTTP Server, HTTPS Server

  2. Agent: HTTP Agent, HTTP Agent

  3. Client: HTTP Client, HTTP Client, HTTP Sync Client, HTTPS Sync Client

hp http

新增 Linux Demo

  1. testecho-ssl: (SRC) SSL simple test echo server/agent/client

  2. testecho-ssl-pfm: (SO) SSL performance test echo server/agent/client

  3. testecho-ssl-pull: (SO) SSL pull echo server/agent/client

  4. testecho-ssl-pack: (4C SO) SSL pack echo server/agent/client

  5. testecho-http: (SRC) HTTP simple test echo server/agent/client/sync-client

  6. testecho-http-4c: (4C SO) HTTP simple test echo server/agent/client/sync-client

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:高性能跨平台网络通信框架 HP-Socket v5.4.3
加载中

精彩评论

小糊涂君
小糊涂君
小糊涂前来挺贴支持,HP-socket一直都是棒棒哒,还支持线程池厉害的不要不要的。还会支持kcp简直就是完美通信框架哦
s
scx1717
感谢大牛们的无私奉献,超级棒
郎海尘
郎海尘
卧槽,真的太牛逼了
c@sm.zxp
c@sm.zxp
一如既往支持
艰苦的小蜗牛
实际项目中在用,socket服务非常稳定,多谢大牛们的无私奉献

最新评论(32

Jimmm
Jimmm
这个和netty是一种东西吗?区别在哪里,或者说优势在哪里。
喷子
喷子

引用来自“喷子”的评论

.net core下能用吗
已经确认可以用。
喷子
喷子
.net core下能用吗
伤神小怪兽
伤神小怪兽

引用来自“开源中国顶顶顶”的评论

替代rpc 方案可行?
RPC是上层应用,通信层作为RPC的承载。
伤神小怪兽
伤神小怪兽

引用来自“Emra”的评论

在我们自己的框架中基于socket 协议开发了类似功能的组件,但是解决粘包问题的方案不是很好,我们运用的方案主要有这几种:1.分包传输,2.建立多个线程池,把封包隔离 3.适当降低封包发送的频率 想知道开源组件到底是怎么解决的这个问题
你们这些方法根本不是解决问题,而是想回避问题,而又回避不了。HP的PULL、PACK模型轻松解决分包,请看文档。
Emra
Emra
在我们自己的框架中基于socket 协议开发了类似功能的组件,但是解决粘包问题的方案不是很好,我们运用的方案主要有这几种:1.分包传输,2.建立多个线程池,把封包隔离 3.适当降低封包发送的频率 想知道开源组件到底是怎么解决的这个问题
伤神小怪兽
伤神小怪兽

引用来自“冰力”的评论

项目分 Linux 和 Windows 两个目录?这维护起来麻烦了。。
只要你用起来不麻烦就好!
开源中国顶顶顶
开源中国顶顶顶
替代rpc 方案可行?
sdwhgqx
sdwhgqx
牛逼、实用、稳定的通讯库
逆风扬
逆风扬
非常感谢大牛们的无私奉献,超级棒,学些学习
返回顶部
顶部