5.4节呈献:HP-Socket v5.3.1 发布,支持 Android NDK

Ldcsaa 2018-05-04 11:06:46
加精


项目主页 : http://www.oschina.net/p/hp-socket
开发文档 : http://www.docin.com/p-2079016612.html
下载地址 : https://github.com/ldcsaa/HP-Socket
QQ Group : 75375912, 44636872

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

Server:基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。
Agent:Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。
Client:基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。

v5.3.1 更新

一、Linux版本更新
1. Android NDK 支持:所有组件源码均可使用Android NDK编译,在Android平台上运行
2. 增加 _ICONV_DISABLED 预编译宏用于关闭 iconv 库功能
3. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能





二、Windows版本更新
1. 修复 C# SDK 关于 SSL 初始化失败 Bug
2. 增加 _ZLIB_DISABLED 预编译宏用于关闭 zlib 库功能

三、其它更新
1. http-parser 解析器升级到 2.8.1 版本
2. OpenSSL 版本升级到 1.1.0h
3. jemalloc 版本升级到 5.0.1 版本

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


三、新增 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


四、新增 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
...全文
4130 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ldcsaa 2019-09-23
  • 打赏
  • 举报
回复
HP-Socket v5.6.1 发布 https://bbs.csdn.net/topics/394545455
Ldcsaa 2019-07-03
  • 打赏
  • 举报
回复
HP-Socket v5.5.3 发布 https://bbs.csdn.net/topics/392748259
Ldcsaa 2019-07-03
  • 打赏
  • 举报
回复
HP-Socket v5.5.3 发布 https://bbs.csdn.net/topics/392748259
z-xiaoyao 2018-06-30
  • 打赏
  • 举报
回复
厉害厉害,学习到了,厉害
Ldcsaa 2018-06-27
  • 打赏
  • 举报
回复
高性能跨平台网络通信框架 HP-Socket v5.3.2 发布
https://bbs.csdn.net/topics/392405123

sheye98 2018-06-27
  • 打赏
  • 举报
回复
这个文件的合适him哦哦JJ突突突默默OK了聚聚
aierda 2018-05-14
  • 打赏
  • 举报
回复
厉害,谢谢分享
allenjiao 2018-05-11
  • 打赏
  • 举报
回复
u010438320 2018-05-10
  • 打赏
  • 举报
回复
非常感谢分享,很有用处。
qq_40275559 2018-05-09
  • 打赏
  • 举报
回复
lz辛苦了 真好用 哈哈哈哈谢谢
line_us 2018-05-09
  • 打赏
  • 举报
回复
Android NDK 支持
爱的色彩 2018-05-08
  • 打赏
  • 举报
回复
非常好用,支持Linux开发,目前已经在linux下使用TCP和UDP构建了服务端,在windows下构建了客户端,通信状况良好,性能稳定,可移植性好,值得学习
孤独de猫 2018-05-08
  • 打赏
  • 举报
回复
oyljerry 2018-05-08
  • 打赏
  • 举报
回复
Ldcsaa 2018-05-07
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
期待VxWorks版本中……
怎么还没上首页呀,赶快催催呗~
赵4老师 2018-05-07
  • 打赏
  • 举报
回复
期待VxWorks版本中……
编程有钱人了 2018-05-07
  • 打赏
  • 举报
回复
android 版本终于来了!
赵4老师 2018-05-07
  • 打赏
  • 举报
回复
引用 13 楼 Ldcsaa 的回复:
[quote=引用 12 楼 zhao4zhong1 的回复:] 期待VxWorks版本中……
怎么还没上首页呀,赶快催催呗~[/quote] 公告:zhao4zhong1不是CSDN的工作人员。
gspUser 2018-05-06
  • 打赏
  • 举报
回复
smwhotjay 2018-05-06
  • 打赏
  • 举报
回复
加载更多回复(8)
学习并掌握C++2.0(11+14+17+20)的新特性,学习线程及线程池的应用 ---------------------------------------------------给小白学员的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其中一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论:   必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向:  精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控:  理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...) 3.项目实战(1) Qt项目:  至少要亲手练习10个实战项目(网络服务器、多线程、数据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)---------------------------------------------------  第1章 C++11新特性 41). nullptr关键字与新语法 42). auto和decltype类型推导 6 auto讲解 6 auto示例 7 decltype 83). for区间迭代 94). 初始化列表 105). 模板增强 11外部模板 11类型别名模板 12默认模板参数 126). 构造函数 13委托构造 13继承构造 147). Lambda 表达式 158). 新增容器 20std::array 20std::forward_list 21无序容器 22元组 std::tuple 239). 正则表达式 2610). 语言级线程支持 28多线程库简介 2811). 右值引用和move语义 31右值引用和move语义 32转移左值 3412). constexpr 35第2章 C++14新特性 36Lambda 函数 36类型推导 37返回值类型推导(Return type deduction) 37泛型lambda 39[[弃用的]]  [[deprecated]]属性 40二进制数字和数字分隔符 41第3章 C++17新特性 42安装GCC10.2 42安装msys2-x86_64-20200720 42更新镜像 42更新软件库 43安装 MinGW64 等必要的软件 43环境变量Path 43编译命令 43constexpr 44typename 45折叠表达式 47结构化绑定 48条件分支语句初始化 49聚合初始化 50嵌套命名空间 52lambda表达式捕获*this的值 53改写/继承构造函数 54用auto作为非类型模板参数 55__has_include 56fallthrough 57nodiscard 57maybe_unused 58第4章 C++20新特性 59编译命令 59concept 59typename 60explicit 61constinit 62位域变量的默认成员初始化 62指定初始化 63基于范围的for循环初始化 64放宽基于范围的for循环,新增自定义范围方法 65嵌套内联命名空间 66允许用圆括弧的值进行聚合初始化 67unicode字符串字面量 68允许转换成未知边界的数组 68likely和unlikely 69第5章 C++2.0(11/14/17/20)总结与分析 705.1 C语言与C++ 715.2 语言可用性的强化 725.2.1 常量 725.2.2 变量及其初始化 735.2.3 类型推导 745.2.4 控制流 765.2.5 模板 775.2.6 面向对象 815.3 语言运行期的强化 835.3.1 Lambda 表达式 835.3.2 右值引用 865.4 容器 885.4.1 线性容器 885.4.2 无序容器 895.4.3 元组 895.5 智能指针与内存管理 905.5.1 RAII 与引用计数 905.5.2 std::shared_ptr 905.5.3 std::unique_ptr 915.5.4 std::weak_ptr 91第6章 C++2.0多线程原理与实战 93什么是并发 93并发的方式 93为什么使用并发 95线程简介 96创建线程的三种方式 971. 通过函数 972.通过类对象创建线程 993.通过lambda表达式创建线程 101thread线程的使用 101互斥量与临界区 105期物Future 111条件变量 112原子操作 114内存模型 118第7章 C++2.0线程池原理与实战 120线程与线程池的基本原理 1201)、线程 1202)、线程的生命周期 1213)、什么是单线程和多线程 1214)、线程池 1225)、四种常见的线程池 123线程池的架构与流程 123线程池代码实战 125    
Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发经典丛书 出版社:清华大学出版社 ISBN:9787302343011 上架时间:2013-12-30 出版日期:2014 年1月 开本:16开 页码:344 版次:1-1 第1章 Android平台上的C++入门 1 1.1 Microsoft Windows 1 1.1.1 在Windows平台上下载并安装JDK开发包 2 1.1.2 在Windows平台上下载并安装Apache ANT 5 1.1.3 在Windows平台上下载并安装Android SDK 7 1.1.4 在Windows平台上下载并安装Cygwin 8 1.1.5 在Windows平台上下载并安装Android NDK 11 1.1.6 在Windows平台上下载并安装Eclipse 13 1.2 Apple Mac OS X 14 1.2.1 在Mac平台上安装Xcode 14 1.2.2 验证Mac平台的Java开发包 15 1.2.3 验证Mac平台上的Apache ANT 15 1.2.4 验证GNU Make 16 1.2.5 在Mac平台上下载并安装Android SDK 16 1.2.6 在Mac平台上下载并安装Android NDK 18 1.2.7 在Mac平台上下载并安装Eclipse 19 1.3 Ubuntu Linux 20 1.3.1 检查GNU C库版本 20 1.3.2 激活在64位系统上支持32位的功能 21 1.3.3 在Linux平台上下载并安装Java开发工具包(JDK) 21 1.3.4 在Linux平台上下载并安装Apache ANT 22 1.3.5 在Linux平台上下载并安装GNU Make 22 1.3.6 在Linux平台上下载并安装Android SDK 23 1.3.7 在Linux平台上下载并安装Android NDK 24 1.3.8 在Linux平台上下载并安装Eclipse 25 1.4 下载并安装ADT 26 1.4.1 安装Android平台包 29 1.4.2 配置模拟器 30 1.5 小结 33 第2章 深入了解Android NDK 35 2.1 Android NDK提供的组件 35 2.2 Android NDK的结构 36 2.3 以一个示例开始 36 2.3.1 指定Android NDK的位置 37 2.3.2 导入示例项目 37 2.3.3 向项目中添加原生支持 39 2.3.4 运行项目 40 2.3.5 用命令行对项目进行构建 41 2.3.6 检测Android NDK项目的结构 42 2.4 构建系统 42 2.4.1 Android.mk 43 2.4.2 Application.mk 53 2.5 使用NDK-Build脚本 54 2.6 排除构建系统故障 55 2.7 小结 56 第3章 用JNI实现与原生代码通信 57 3.1 什么是JNI 57 3.2 以一个示例开始 57 3.2.1 原生方法的声明 58 3.2.2 加载共享库 58 3.2.3 实现原生方法 59 3.3 数据类型 64 3.3.1 基本数据类型 64 3.3.2 引用类型 64 3.4 对引用数据类型的操作 65 3.4.1 字符串操作 65 3.4.2 数组操作 67 3.4.3 NIO 操作 68 3.4.4 访问域 69 3.4.5 调用方法 71 3.4.6 域和方法描述符 72 3.5 异常处理 75 3.5.1 捕获异常 75 3.5.2 抛出异常 75 3.6 局部和全局引用 76 3.6.1 局部引用 76 3.6.2 全局引用 76 3.6.3 弱全局引用 77 3.7 线程 78 3.7.1 同步 78 3.7.2 原生线程 79 3.8 小结 79 第4章 使用SWIG自动生成JNI代码 81 4.1 什么是SWIG 81 4.2 安装 82 4.2.1 Windows平台上SWIG的安装 82 4.2.2 在Mac OS X下安装 83 4.2.3 在Ubuntu Linux下安装 85 4.3 通过示例程序试用SWIG 86 4.3.1 接口文件 86 4.3.2 在命令行方式下调用SWIG 89 4.3.3 将SWIG集成到Android构建过程中 90 4.3.4 更新Activity 92 4.3.5 执行应用程序 93 4.3.6 剖析生成的代码 93 4.4 封装C语言代码 94 4.4.1 全局变量 94 4.4.2 常量 95 4.4.3 只读变量 96 4.4.4 枚举 97 4.4.5 结构体 100 4.4.6 指针 101 4.5 封装C++代码 101 4.5.1 指针、引用和值 102 4.5.2 默认参数 103 4.5.3 重载函数 104 4.5.4 类 104 4.6 异常处理 106 4.7 内存管理 107 4.8 从原生代码中调用Java 108 4.8.1 异步通信 108 4.8.2 启用Directors 109 4.8.3 启用RTTI 109 4.8.4 重写回调方法 109 4.8.5 更新HelloJni Activity 110 4.9 小结 110 第5章 日志、调试及故障处理 111 5.1 日志 111 5.1.1 框架 111 5.1.2 原生日志API 112 5.1.3 受控制的日志 114 5.1.4 控制台日志 118 5.2 调试 119 5.2.1 预备知识 119 5.2.2 调试会话建立 120 5.2.3 建立调试示例 121 5.2.4 启动调试器 121 5.3 故障处理 126 5.3.1 堆栈跟踪分析 127 5.3.2 对JNI的扩展检查 128 5.3.3 内存问题 130 5.3.4 strace 133 5.4 小结 134 第6章 Bionic API入门 135 6.1 回顾标准库 135 6.2 还有另一个C库 136 6.2.1 二进制兼容性 136 6.2.2 提供了什么 136 6.2.3 缺什么 137 6.3 内存管理 137 6.3.1 内存分配 137 6.3.2 C语言的动态内存管理 138 6.3.3 C++的动态内存管理 139 6.4 标准文件I/O 141 6.4.1 标准流 141 6.4.2 使用流I/O 141 6.4.3 打开流 142 6.4.4 写入流 143 6.4.5 流的读取 145 6.4.6 搜索位置 148 6.4.7 错误检查 149 6.4.8 关闭流 149 6.5 与进程交互 150 6.5.1 执行shell命令 150 6.5.2 与子进程通信 150 6.6 系统配置 151 6.6.1 通过名称获取系统属性值 152 6.6.2 通过名称获取系统属性 152 6.7 用户和组 153 6.7.1 获取应用程序用户和组ID 153 6.7.2 获取应用程序用户名 154 6.8 进程间通信 154 6.9 小结 154 第7章 原生线程 155 7.1 创建线程示例项目 155 7.1.1 创建Android项目 155 7.1.2 添加原生支持 157 7.1.3 声明字符串资源 157 7.1.4 创建简单的用户界面 157 7.1.5 实现Main Activity 159 7.1.6 生成C/C++头文件 162 7.1.7 实现原生函数 163 7.1.8 更新Android.mk构建脚本 165 7.2 Java 线程 165 7.2.1 修改示例应用程序使之能够使用Java线程 165 7.2.2 执行Java Threads示例 166 7.2.3 原生代码使用Java线程的优缺点 167 7.3 POSIX线程 168 7.3.1 在原生代码中使用POSIX线程 168 7.3.2 用pthread_create创建线程 168 7.3.3 更新示例应用程序以使用POSIX线程 169 7.3.4 执行POSIX线程示例 174 7.4 从POSIX线程返回结果 174 7.5 POSIX线程同步 176 7.5.1 用互斥锁同步POSIX线程 176 7.5.2 使用信号量同步POSIX线程 180 7.6 POSIX线程的优先级和调度策略 180 7.6.1 POSIX的线程调度策略 181 7.6.2 POSIX Thread优先级 181 7.7 小结 181 第8章 POSIX Socket API:面向连接的通信 183 8.1 Echo Socket示例应用 183 8.1.1 Echo Android应用项目 184 8.1.2 抽象echo activity 184 8.1.3 echo应用程序字符串资源 188 8.1.4 原生echo模块 188 8.2 用TCP sockets实现面向连接的通信 191 8.2.1 Echo Server Activity的布局 192 8.2.2 Echo Server Activity 193 8.2.3 实现原生TCP Server 194 8.2.4 Echo客户端Activity布局 206 8.2.5 Echo客户端Activity 208 8.2.6 实现原生TCP客户端 210 8.2.7 更新Android Manifest 213 8.2.8 运行TCP Sockets示例 214 8.3 小结 217 第9章 POSIX Socket API:无连接的通信 219 9.1 将UDP Server方法添加到Echo Server Activity中 219 9.2 实现原生UDP Server 220 9.2.1 创建UDP Socketsocket 220 9.2.2 从Socket接收数据报:recvfrom 221 9.2.3 向Socket发送数据报:sendto 223 9.2.4 原生UDP Server方法 224 9.3 将原生UDP Client方法加入Echo Client Activity中 225 9.4 实现原生UDP Client 226 9.5 运行UDP Sockets示例 228 9.5.1 连通UDP的模拟器 228 9.5.2 启动Echo UDP Client 229 9.6 小结 229 第10章 POSIX Socket API:本地通信 231 10.1 Echo Local Activity布局 231 10.2 Echo Local Activity 232 10.3 实现原生本地Socket Server 237 10.3.1 创建本地Socketsocket 237 10.3.2 将本地socket与Name绑定:bind 238 10.3.3 接受本地Socket:accept 240 10.3.4 原生本地Socket Server 240 10.4 将本地Echo Activity添加到Manifest中 242 10.5 运行本地 Sockets示例 243 10.6 异步I/O 243 10.7 小结 244 第11章 支持C++ 245 11.1 支持的C++运行库 245 11.1.1 GAbi++ C++运行库 246 11.1.2 STLport C++运行库 246 11.1.3 GNU STL C++运行库 246 11.2 指定C++运行库 246 11.3 静态运行库与动态运行库 247 11.4 C++异常支持 247 11.5 C++ RTTI支持 248 11.6 C++标准库入门 249 11.6.1 容器 249 11.6.2 迭代器 250 11.6.3 算法 251 11.7 C++运行库的线程安全 251 11.8 C++运行库调试模式 251 11.8.1 GNU STL调试模式 251 11.8.2 STLport调试模式 252 11.9 小结 253 第12章 原生图形API 255 12.1 原生图形API的可用性 255 12.2 创建一个AVI视频播放器 256 12.2.1 将AVILib作为NDK的一个导入模块 256 12.2.2 创建AVI播放器Android应用程序 258 12.2.3 创建AVI Player的Main Activity 258 12.2.4 创建Abstract Player Activity 262 12.3 使用JNI图形API进行渲染 269 12.3.1 启用JNI Graphics API 269 12.3.2 使用JNI Graphics API 270 12.3.3 用Bitmap渲染来更新AVI Player 271 12.3.4 运行使用Bitmap渲染的AVI Player 278 12.4 使用OpenGL ES渲染 279 12.4.1 使用OpenGL ES API 279 12.4.2 启用OpenGL ES 1.x API 279 12.4.3 启用OpenGL ES 2.0 API 280 12.4.4 用OpenGL ES渲染来更新AVI Player 280 12.5 使用原生Window API进行渲染 290 12.5.1 启用原生Window API 290 12.5.2 使用原生Window API 291 12.5.3 用原生window渲染器来更新AVI Player 293 12.5.4 EGL图形库 301 12.6 小结 301 第13章 原生音频API 303 13.1 使用OpenSL ES API 303 13.1.1 与OpenSL ES标准的兼容性 304 13.1.2 音频许可 304 13.2 创建WAVE音频播放器 304 13.2.1 将WAVELib作为NDK导入模块 304 13.2.2 创建WAVE播放器Android应用程序 306 13.2.3 创建WAVE播放器主Activity 306 13.2.4 实现WAVE Aduio播放 310 13.3 运行WAVE Audio Player 327 13.4 小结 328 第14章 程序概要分析和NEON优化 329 14.1 用GNU Profiler度量性能 329 14.1.1 安装Android NDK Profiler 329 14.1.2 启用Android NDK Profiler 330 14.1.3 使用GNU Profiler分析gmon.out文件 331 14.2 使用ARM NEON Intrinsics进行优化 332 14.2.1 ARM NEON技术概述 333 14.2.2 给AVI Player添加一个亮度过滤器 333 14.2.3 为AVI播放器启用Android NDK Profiler 336 14.2.4 AVI Player程序概要分析 337 14.2.5 使用NEON Intrinsics优化Brightness Filter 338 14.3 自动向量化 342 14.3.1 启用自动向量化 343 14.3.2 自动向量化问题的发现和排除 344 14.4 小结 344

18,356

社区成员

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

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