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

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

    博客分类:
  • C++
阅读更多

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 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。

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

通用性

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

易用性

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

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

高性能

  HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策:

  • Client 组件:基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。
  • Server 组件:基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。
  • Agent 组件:对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。

伸缩性

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

   (项目主页:点击这里,下载地址:点击这里)


*** v3.3.2更新 ***

 > 组件接口调整:

-----------------
  1. IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象
  2. 增加 IPullClient 接口,用作 PULL Client 组件的基接口
  3. IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)
  4. 增加 IComplexSocketListener 监听器接口,用作 Server/Agent 组件的监听器基接口
  5. IComplexSocketListener 提供 OnShutdown 通知方法取代 Server/Agent 组件原来的 OnServerShutdown/OnAgentShutdown
  6. IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据
  7. IServer 和 IAgent 组件增加“静默连接处理”相关方法:
    1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接
    2) GetSilencePeriod():// 获取某个连接静默时间(毫秒)
    3) SetMarkSilence():// 设置是否标记静默时间
    4) IsMarkSilence():// 检测是否标记静默时间

 > 增加 UdpCast 通信组件:

-----------------
  1. UdpClient / UdpServer 用于 C/S 模式的点对点单播通信,但在某些应用场景下,需要用到组播或广播通信
  2. UdpCast 实现了组播或广播通信,UdpCast 提供 IUdpCast 接口,该接口继承自 IClient,有以下接口方法:
    /* 1) 通知接口方法: */
      OnPrepareConnect(IClient* pClient, SOCKET socket)
      OnConnect(IClient* pClient)
      OnSend(IClient* pClient, const BYTE* pData, int iLength)
      OnReceive(IClient* pClient, const BYTE* pData, int iLength)
      OnClose(IClient* pClient)
      OnError(IClient* pClient, EnSocketOperation enOperation, int iErrorCode)
    
    /* 2) 主要操作方法: */
      Start(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE /*该参数被忽略*/)
      Stop()
      Connect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)
      Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)
      SendPackets(const WSABUF pBuffers[], int iCount)
  3. 增加 UdpCast 使用示例:TestUDPCast


分享到:
评论

相关推荐

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

    2.2 TCP和UDP协议结构的区别 7 2.3 TCP和UDP编程步骤的区别 8 三、设计内容 10 3.1开发环境 10 3.2程序流程图 10 3.3功能模块 12 3.3.1客户端程序设计 12 3.3.2服务器端程序设计 17 3.4数流图 22 3.5关键的数据结构 ...

    Linux高性能服务器编程

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

    精通Windows Sockets网络开发:基于Visual C++实现-带源码

    3.3.2字节顺序问题 3.4基本tcp套接字编程 3.4.1wsastartup()函数 3.4.2socket()函数 3.4.3bind()函数 3.4.4listen()函数 3.4.5accept()函数 3.4.6recv()函数 3.4.7send()函数 3.4.8closesocket()...

    基于QT的UDP办公交流系统的设计与实现 .docx

    它提供了多种通信方式,包括TCP/IP、UDP、Unix Domain Socket等。 2.4 套接字地址 套接字地址是套接字的唯一标识符,包含IP地址和端口号两部分。IP地址用于标识主机,端口号用于标识进程。 2.5 端口号 端口号是...

    linux网络编程(中文版)

    - **传输层**(Transport Layer):提供端到端的数据传输服务,如TCP/UDP协议。 - **会话层**(Session Layer):管理会话,确保数据可靠传输。 - **表示层**(Presentation Layer):数据加密、压缩等功能。 - **应用...

    C#网络核心编程(Word版电子书+PPT+源代码+习题解答)

    学习.NET Socket编程的好书,资源包含Word版电子书(201页完整版),源代码,PPT,习题解答,史上最全。 目录-------------------------------------------------------- 前 言 6 第1章 进程、线程与网络协议 7 1.1 进程...

    Linux网络编程指南

    - **传输层**:例如TCP(Transmission Control Protocol)或UDP(User Datagram Protocol),负责确保数据可靠传输。 - **网络层**:如IP(Internet Protocol),负责数据包路由。 - **链路层**:负责物理传输,包括...

    linux programming instances网络编程教程 附源代码

    全书由13章组成,内容涉及到Lindx系统编程基础、TCP/UDP协议、套接字编程概念及I/O模型、高级编程中需要用到的进程问通信同步、多路复用、多线程编程和一些高级套接字控制方法、IPv6介绍以及网络安全等。...

    JAVA程序开发技术

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

    Windows应用编程

    - **4.4.1 UDP和TCP的区别** UDP是无连接的,速度快但不保证数据可靠性;TCP是面向连接的,保证数据可靠传输。 - **4.4.2 HTTP协议** HTTP协议定义了客户端和服务端如何交互数据,使用TCP作为传输层协议。 - *...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    9.2.1 创建UDP Socket:socket 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 ...

    Linux下关于网络编程

    - **5.7 小结**:TCP/IP协议族已成为现代网络通信的标准,其设计原则和实现细节对于理解网络编程至关重要。 #### 七、Berkeley套接字 **6.1 引言** Berkeley套接字(Berkeley Sockets)是一种用于网络通信的API,...

    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等。 本书所有的源...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    7.2.1 多层应用系统的结构 7.2.2 存取数据的运作原理 7.2.3 更新数据的运作原理 7.3 容错处理和负载平衡 7.4 Active Form 第8章 Socket编程 8.1 WinSock基础 8.1.1 TCP、UDP和IP协议 8.1.2 套接字(Socket) 8.1.3 ...

Global site tag (gtag.js) - Google Analytics