高性能 TCP & UDP 通信框架 HP-Socket v3.5.3 发布

DuMiYue 2016-08-16 03:02:26
加精

  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 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 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。
------------------------------------------------------------------------------------------------

*** v3.5.3 更新 ***

> Bug 修复:
-----------------
1、修复 IClient 组件在极端情况下触发两次 OnClose() 事件 Bug
2、修复 IClient 组件在极端情况下销毁 IClient 对象导致程序崩溃 Bug
------------------------------------------------------------------------------------------------

*** v3.5.2 更新 ***

> 组件接口调整:
-----------------
1、IClient 组件 Start() 方法默认连接方式改为异步连接
2、IClient 组件 Start() 方法增加可选参数 lpszBindAddress,设置绑定地址
3、HP-Socket 4C 增加导出方法 HP_Client_StartWithBindAddress() 方法,可设置绑定地址
4、IUdpCast 组件删除接口方法 Get/SetBindAddress()
5、IServer 接口 增加 GetLocalAddress() 方法用于获取连接的本地地址信息
6、增加全局函数 SYS_GetSocketLocalAddress() 和 SYS_GetSocketRemoteAddress() 分别用于获取 SOCKET 本地和远程地址信息
------------------------------------------------------------------------------------------------

*** 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()
------------------------------------------------------------------------------------------------
...全文
2592 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
DuMiYue 2016-08-30
  • 打赏
  • 举报
回复
高性能 TCP & UDP 通信框架 HP-Socket v3.5.4 正式发布 更新地址: http://www.oschina.net/news/76645/hp-socket-3-5-4
大漠飞狐 2016-08-29
  • 打赏
  • 举报
回复
支持vs2008 吗?
大漠飞狐 2016-08-29
  • 打赏
  • 举报
回复
免费还是付费的?
ycyyoulove 2016-08-19
  • 打赏
  • 举报
回复
sunnjh 2016-08-19
  • 打赏
  • 举报
回复
支持
Poopaye 2016-08-18
  • 打赏
  • 举报
回复
之前就看过,发觉太复杂了
haiyang0735 2016-08-18
  • 打赏
  • 举报
回复
cattpon 2016-08-18
  • 打赏
  • 举报
回复
看看是什么~
ztenv 2016-08-18
  • 打赏
  • 举报
回复
期待跨平台:windows\linux\arm\android/ios等等
qq_28209499 2016-08-18
  • 打赏
  • 举报
回复
已看yikanyikand
  • 打赏
  • 举报
回复
又更新了
shijijinganji4296 2016-08-17
  • 打赏
  • 举报
回复
66666666666666666666666
赵4老师 2016-08-17
  • 打赏
  • 举报
回复
这不是鸭头 2016-08-17
  • 打赏
  • 举报
回复
testtj2013 2016-08-17
  • 打赏
  • 举报
回复
谢谢分享,不错
无皿 2016-08-17
  • 打赏
  • 举报
回复
支持
dreamzhn 2016-08-17
  • 打赏
  • 举报
回复
123455667788888999
dreamzhn 2016-08-17
  • 打赏
  • 举报
回复
十分777777777777
cgy1989 2016-08-17
  • 打赏
  • 举报
回复
很早之前下载过,但是发现只支持windows。 目前服务器开发大部分还是用linux的多。 希望支持跨平台。
Joker_hr 2016-08-16
  • 打赏
  • 举报
回复
加载更多回复(6)
《Windows Sockets网络编程》是WindowsSockets网络编程领域公认的经典著作,由Windows Sockets2.0规范解释小组负责人亲自执笔,权威性毋庸置疑。它结合大量示例,对WindowsSockets规范进行了深刻地解读,系统讲解了WindowsSockets网络编程及其相关的概念、原理、主要命令、操作模式,以及开发技巧和可能的陷阱,从程序员的角度给出了大量的建议和最佳实践,是学习WindowsSockets网络编程不可多得的参考书。   全书分为三部分:第一部分(第1~6章),提供了翔实的背景知识和框架方面的概念,借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;第二部分(第7~12章),以FTP客户端实例为基础介绍了函数实例库,还介绍了客户端程序、服务器程序和DLL中间构件及它们的相应函数,并涵盖socket命令和选项及移植BSDSockets相关事项等;第三部分(第13~17章),介绍了应用程序调试技术和工具,针对应用编程中的陷阱的建议和措施,WinSockAPI的多种操作系统平台,WinSock规范的可选功能和WinSock规范2.0中的所有新功能。 译者序 序 前言 第1章 Windows Sockets概述 1.1 什么是Windows Sockets 1.2 Windows Sockets的发展历史 1.3 Windows Sockets的优势 1.3.1 Windows Sockets是一个开放的标准 1.3.2 Windows Sockets提供源代码可移植性 1.3.3 Windows Sockets支持动态链接 1.3.4 Windows Sockets的优点 1.4 Windows Sockets的前景 1.5 结论 第2章 Windows Sockets的概念 2.1 OSI网络模型 2.2 WinSock网络模型 2.2.1 信息与数据 2.2.2 应用协议 2.3 WinSock中的OSI层次 2.3.1 应用层 2.3.2 表示层 2.3.3 会话层 2.3.4 传输层 2.3.5 网络层 2.3.6 数据链路层 2.3.7 物理层 2.4 模块化的层次框 2.5 服务和协议 2.6 协议和API 第3章 TCP/IP协议服务 3.1 什么是TCP/IP 3.2 TCP/IP的发展历史 3.3 传输服务 3.3.1 无连接的服务:UDP 3.3.2 面向连接的服务:TCP 3.3.3 传输协议的选择:UDPTCP的对比 3.4 网络服务 3.4.1 IP服务 3.4.2 ICMP服务 3.5 支持协议和服务 3.5.1 域名服务 3.5.2 地址解析协议 3.5.3 其他支持协议 3.6 TCP/IP的发展前景 第4章 网络应用程序工作机制 4.1 客户端-服务器模型 4.2 网络程序概览 4.3 socket的打开 4.4 socket的命名 4.4.1 sockaddr结构 4.4.2 sockaddr_in结构 4.4.3 端口号 4.4.4 本地IP地址 4.4.5 什么是socket名称 4.4.6 客户端socket名称是可选的 4.5 与另一个socket建立关联 4.5.1 服务器如何准备建立关联 4.5.2 客户端如何发起一个关联 4.5.3 服务器如何完成一个关联 4.6 socket之间的发送与接收 4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 操作模式 5.1 什么是操作模式 5.1.1 不挂机,等待:阻塞 5.1.2 挂机后再拨:非阻塞 5.1.3 请求对方回拨:异步 5.2 阻塞模式 5.2.1 阻塞socket 5.2.2 阻塞函数 5.2.3 伪阻塞的问题 5.2.4 阻塞钩子函数 5.2.5 阻塞情境 5.2.6 撤销阻塞操作 5.2.7 阻塞操作中的超时 5.2.8 无最少接收限制值 5.2.9 代码示例 5.3 非阻塞模式 5.3.1 怎样使socket成为非阻塞的 5.3.2 成功与失败不是绝对的 5.3.3 探询而非阻塞 5.3.4 显式地避让 5.3.5 代码示例 5.4 异步模式 5.4.1 认识异步函数 5.4.2 撤销异步操作 5.4.3 代码示例 5.4.4 AU_T
《Windows Sockets网络编程》是WindowsSockets网络编程领域公认的经典著作,由Windows Sockets2.0规范解释小组负责人亲自执笔,权威性毋庸置疑。它结合大量示例,对WindowsSockets规范进行了深刻地解读,系统讲解了WindowsSockets网络编程及其相关的概念、原理、主要命令、操作模式,以及开发技巧和可能的陷阱,从程序员的角度给出了大量的建议和最佳实践,是学习WindowsSockets网络编程不可多得的参考书。   全书分为三部分:第一部分(第1~6章),提供了翔实的背景知识和框架方面的概念,借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;第二部分(第7~12章),以FTP客户端实例为基础介绍了函数实例库,还介绍了客户端程序、服务器程序和DLL中间构件及它们的相应函数,并涵盖socket命令和选项及移植BSDSockets相关事项等;第三部分(第13~17章),介绍了应用程序调试技术和工具,针对应用编程中的陷阱的建议和措施,WinSockAPI的多种操作系统平台,WinSock规范的可选功能和WinSock规范2.0中的所有新功能。 译者序 序 前言 第1章 Windows Sockets概述 1.1 什么是Windows Sockets 1.2 Windows Sockets的发展历史 1.3 Windows Sockets的优势 1.3.1 Windows Sockets是一个开放的标准 1.3.2 Windows Sockets提供源代码可移植性 1.3.3 Windows Sockets支持动态链接 1.3.4 Windows Sockets的优点 1.4 Windows Sockets的前景 1.5 结论 第2章 Windows Sockets的概念 2.1 OSI网络模型 2.2 WinSock网络模型 2.2.1 信息与数据 2.2.2 应用协议 2.3 WinSock中的OSI层次 2.3.1 应用层 2.3.2 表示层 2.3.3 会话层 2.3.4 传输层 2.3.5 网络层 2.3.6 数据链路层 2.3.7 物理层 2.4 模块化的层次框 2.5 服务和协议 2.6 协议和API 第3章 TCP/IP协议服务 3.1 什么是TCP/IP 3.2 TCP/IP的发展历史 3.3 传输服务 3.3.1 无连接的服务:UDP 3.3.2 面向连接的服务:TCP 3.3.3 传输协议的选择:UDPTCP的对比 3.4 网络服务 3.4.1 IP服务 3.4.2 ICMP服务 3.5 支持协议和服务 3.5.1 域名服务 3.5.2 地址解析协议 3.5.3 其他支持协议 3.6 TCP/IP的发展前景 第4章 网络应用程序工作机制 4.1 客户端-服务器模型 4.2 网络程序概览 4.3 socket的打开 4.4 socket的命名 4.4.1 sockaddr结构 4.4.2 sockaddr_in结构 4.4.3 端口号 4.4.4 本地IP地址 4.4.5 什么是socket名称 4.4.6 客户端socket名称是可选的 4.5 与另一个socket建立关联 4.5.1 服务器如何准备建立关联 4.5.2 客户端如何发起一个关联 4.5.3 服务器如何完成一个关联 4.6 socket之间的发送与接收 4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 操作模式 5.1 什么是操作模式 5.1.1 不挂机,等待:阻塞 5.1.2 挂机后再拨:非阻塞 5.1.3 请求对方回拨:异步 5.2 阻塞模式 5.2.1 阻塞socket 5.2.2 阻塞函数 5.2.3 伪阻塞的问题 5.2.4 阻塞钩子函数 5.2.5 阻塞情境 5.2.6 撤销阻塞操作 5.2.7 阻塞操作中的超时 5.2.8 无最少接收限制值 5.2.9 代码示例 5.3 非阻塞模式 5.3.1 怎样使socket成为非阻塞的 5.3.2 成功与失败不是绝对的 5.3.3 探询而非阻塞 5.3.4 显式地避让 5.3.5 代码示例 5.4 异步模式 5.4.1 认识异步函数 5.4.2 撤销异步操作 5.4.3 代码示例 5.4.4 AU_T

18,363

社区成员

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

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