`
guaishou
  • 浏览: 169194 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

HP-Socket

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

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

  《HP-Socket v3.5 开发指南》

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

通用性

  • HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。
  • HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了 HP-Socket 的接口规范都可以无缝整合 HP-Socket。

易用性

  • 易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。
  • HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为 Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。
  • 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.4更新 ***

 > 增加 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()

> Bug 修复:

-----------------
  1. 修复 TCP Pack Agent “异步连接失败导致程序崩溃” Bug
  2. 修复 vc-common-src 公共代码包的 CCASQueue 可能导致无限循环 Bug

4
1
分享到:
评论

相关推荐

    Java TCP IP Socket

    TCP/IP协议族是目前互联网上最广泛使用的协议族,而Socket编程是实现网络通信的一种机制。 在描述中提到的TCP/IP Socket免费电子书,是个人收集的学习资料。由于版权问题,建议仅供学习使用,并且在使用过程中要...

    【基于MFC的Socket编程】基于TCP协议服务器客户端通信程序_实验报告

    3.5.3 TCP套接字数据结构 24 四、设计成果 24 4.1设计实现的功能 24 4.2运行界面 25 4.3测试界面 30 五、课设总结 31 5.1技术难点 31 5.2遇到的问题及解决方式 32 5.3收获 33 六、附录 36 参考文献 36

    Linux高性能服务器编程

    《Linux高性能服务器编程》共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP/IP通信案例;第二部分对高性能...

    JAVA程序开发技术

    - **定义**:用于UDP通信。 - **发送和接收数据报**。 **3.4.2 DatagramPacket类** - **定义**:表示数据报包。 **3.5 URL编程** **3.5.1 创建URL对象** - **类`URL`**: - 创建URL对象; - 获取URL组件。 **...

    Windows Sockets网络编程 可能是最清晰版本(Windows Sockets 2规范解释小组负责人亲自执笔。)总共4个包,part1

    借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;...

    Windows Sockets网络编程 总计4个包,part2

    借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;...

    C#.NET网络编程.part1

    本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。 本书所有的源...

    Java_TCPIP_Socket编程

    3.5.3 发送和接收...........................................................................................................67 3.6 结束.....................................................................

    嵌入式Linux应用程序开发标准教程(第2版全)

    10.1.3 TCP和UDP 10.2 网络基础编程 10.2.1 socket概述 10.2.2 地址及顺序处理 10.2.3 socket基础编程 10.3 网络高级编程 10.4 实验内容——NTP协议实现 10.5 本章小结 10.6 思考与练习 第11章 嵌入式Linux设备驱动...

    Java典型模块

    3.5.3 泛型的通配符 3.6 类加载器 3.6.1 什么是类加载器 3.6.2 什么是类加载器的委派模型 3.6.3 编写一个自己的加载器 3.7 动态代理 3.7.1 什么是代理 3.7.2 动态代理基础类 3.7.3 InvocationHandler接口 3.7.4 动态...

    ARM嵌入式系统软件开发实例(一)

    4.5.8 UDP协议处理程序的编写 4.5.9 TCP协议处理程序的编写 4.5.10 SOCKET API程序的编写 第5章 GUI图形用户界面基础 5.1 概述 5.2 基本画图原理 5.3 基本画图函数 5.3.1 点 5.3.2 线 5.3.3 圆形 5.3.4 ...

    ARM嵌入式系统软件开发实例(一).part1.rar (共三卷)

    4.5.8 UDP协议处理程序的编写 4.5.9 TCP协议处理程序的编写 4.5.10 SOCKET API程序的编写 第5章 GUI图形用户界面基础 5.1 概述 5.2 基本画图原理 5.3 基本画图函数 5.3.1 点 5.3.2 线 5.3.3 圆形 5.3.4 圆弧及扇形...

    ARM嵌入式系统软件开发实例(一).part2.rar (共三卷)

    4.5.8 UDP协议处理程序的编写 4.5.9 TCP协议处理程序的编写 4.5.10 SOCKET API程序的编写 第5章 GUI图形用户界面基础 5.1 概述 5.2 基本画图原理 5.3 基本画图函数 5.3.1 点 5.3.2 线 5.3.3 圆形 5.3.4 圆弧及扇形...

    ARM嵌入式系统软件开发实例(一).part3.rar (共三卷)

    4.5.8 UDP协议处理程序的编写 4.5.9 TCP协议处理程序的编写 4.5.10 SOCKET API程序的编写 第5章 GUI图形用户界面基础 5.1 概述 5.2 基本画图原理 5.3 基本画图函数 5.3.1 点 5.3.2 线 5.3.3 圆形 5.3.4 圆弧及扇形...

    Python核心编程第二版

     3.5.3 内存分配   3.5.4 引用计数   3.5.5 垃圾收集   3.6 第一个Python程序   3.7 相关模块和开发工具   3.8 练习   第4章 Python对象   4.1 Python 对象   4.2 标准类型   4.3 其他...

    CCNA学习指南-绝对有用

    第9章 用访问列表管理基本通信量 205 9.1 认证目标 9.01:标准IP访问列表 205 9.2 认证目标 9.02:扩展IP访问列表 210 9.3 认证目标 9.03:命名访问列表 211 9.4 认证目标 9.04:标准IPX访问列表 213 9.5 认证...

Global site tag (gtag.js) - Google Analytics