阅读更多

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.4 开发指南》

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

通用性

  • 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.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()

来自: iteye
4
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 移相全桥软开关电源数字控制器设计与应用

    1 引言   近年来,随着大功率开关电源的发展,对控制器的要求越来越高,开关电源的数字化和智能化也将成为未来的发展方向。目前,我国的大功率开关电源多采用传统的模拟控制方式,电路复杂,可靠性差。    2.数字控制器设计   图1 控制器系统结构   本文设计的数字控制器,采用TI公司24X系列DSP控制器中的TMS320LF2407A芯片作为主控制器,主要功能模块包括:(1)DSP与可编程逻辑器件CPLD相配合实现全桥移相谐振软开关驱动(2)偏磁检测电路;(3)其他功能,如数据采集、保护及外部接口等。控制系统结构如图1所示。   2.1移相控制波形的生成   TMS320LF2407A芯片包

  • 数字移动(基础(二))

    题目描述 将 1∼n 按顺序排成一排,构成一个数列。 数字 i 刚好位于位置 i。 再给定一个长度为 n 的位置序列 p1,p2,…,pn,它是 1∼n 的一种排列。 接下来,我们会重复不断地对数列进行如下操作: 重新排列数列中每个数的位置,将位于位置 i 的数移动至位置 pi。(如果 i=pi 则该数仍移动至位置 i)。 每次操作开始时,所有数的移动同时进行,操作结束后,数列将变为一个新的 1∼n 的排列。 例如,当 n=6 并且 p=[4,6,1,3,5,2] 时,第一次操作后,数字 1 将移动

  • 定点数运算

    补码的设计目的:    (1)使符号位能与有效值部分一起参加运算,从而简化运算规则.    (2)使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计    所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。 定点数运算包括移位、加、减、乘、除几种。 一、移位运算   1.移位的意义   移位运算在日常生

  • 输入一个正整数,将此整数的第1位与最后1位互换,第2位与倒数第2位替换,按此操作,输出替换后的数。例如,若这个整数是1,则替换后,这个整数仍然是1,若这个整数是25,则替换后,这个整数变为52。

    import java.util.*; public class Main { public static void main(String[] args) { Scanner k=new Scanner(System.in); int n=k.nextInt(); fun m=new fun(); int sum=m.count(n); m.exchange(n, sum); } } class fun{ stati...

  • 如果我们想要交换两个数字,就可以使用位运算

    我发现自己对于位运算的掌握有些薄弱,所以决定写一篇博客来详细说一说位运算。位运算包括左移运算,右移运算,与运算,或运算,非运算,异或运算。下面我来详细说一说这些运算。 1.左移运算 符号为<< 左移运算是将所有二进制数向左移动一位,空缺出来的位置补零。 比如原来的 0000 0011=3 左移一位变成 0000 0110=6 再左移一位变成 0000 110...

  • 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程...

  • 计算机网络协议(三)——UDP、TCP、Socket

    底层网络知识详解:最重要的传输层概述一、UDP协议二、TCP协议2.1 TCP的三次握手 概述 这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说...

  • 14-2_Qt 5.9 C++开发指南_TCP通信(TCP & Socket 相关知识点;Socket连接过程分为三个步骤: 服务器监听,客户端请求,连接确认)

    TCP 通信必须先建立 TCP 连接,通信端分为客户端和服务器端(如图 14-2 所示)。Qt 提供QTcpSocket 类和 QTcpServer 类用于建立 TCP 通信应用程序。服务器端程序必须使用 QTcpServer 用于端口监听,建立服务器;...

  • php rs485,Ohsce: PHP HI-REL SOCKET TCP/UDP/ICMP/Serial .高可靠性PHP通信&控制框架SOCKET-TCP/UDP/ICMP/硬件Serial-R...

    OHSCE高可靠性的PHP通信框架.官方网站:WWW.OHSCE.ORG WWW.OHSCE.COM 最新版本V0.2.0 2017-02-10开发者QQ群:374756165(新2016-09) 捐助: http://www.ohsce.com/index.php/company/官方源码源地址(获取最新发布的官方...

  • 计算机网络协议 ---- UDP、TCP、Socket

    传输层中有两个重要的协议,UDP和TCP,这也是在开发中经常用到的协议,同样也是面试的重点。本篇将分为三节进行介绍: UDP协议 TCP协议 套接字Socket 一、UDP协议 很多人都会被问到 TCP和UDP的区别,那么大部分人...

  • [Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架

    另是对Socket相关的封装。这些基础类间的关系比较简单,但是和Server/Client框架息息相关。 2. 线程相关 2.1. 类图 2.2. CShared 2.2.1. 功能 CShared实现了引用计数器,引用计数采用原子锁。所有需要...

  • TCP与UDP实现单向和双向通信

    TCP/IP协议栈3.1 分层模型及相应协议3.2 TCP与UDP的关系3.3 IP3.3.1 含义3.3.2 类型3.4 Port3.4.1 含义3.4.2 类型4. URL4.1 含义4.2 组成4.3 与IP、Port的关系4.4 URL类的常用方法5. Socket5.1 含义5...

  • 计算机网路通讯:TCP/IP,UDP,Socket

    传输控制协议是一个工业标准的协议,用于应用程序间的通信,当应用程序通过TCP与另一个应用程序通信时,它会发送一个通信请求,这个请求必须被送到一个确切的地址,双方"握手"之后,TCP将两个应用程序之间建立一个全双工...

  • 计算机网络 - 传输层(TCP、UDP)

    将网络层在不同端系统之间的通信服务扩充到运行在两个端系统上不同的应用层进程之间的通信服务(如何实现进程之间通信的可靠传输)和控制传输层实体的传输速度以避免网络拥塞或者从网络拥塞中恢复过来,这里需要考虑...

  • Java核心类库之(网络编程:网络编程入门、UDP通信程序、TCP通信程序)

    录 1 网络编程入门 1.1 网络编程概述 1.2 网络编程三要素 1.3 IP地址 1.4 InetAddress的使用 1.5 端口 1.6 协议 2 UDP通信程序 2.1 UDP通信原理 2.2 UDP发送数据 2.3 UDP接收数据

  • 基于TCP Socket和Websocket实现的相互即时通信系统

    不同物理服务器,不同语言服务器采用统一的数据传输格式来传输,借助redis数据库的Pub/Sub模式和消息队列,来进行服务器之间的信息通信。为用户提供能够通过客户端和web端接入的即时通信平台,让用户体验传统客户端...

  • 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    UDP是User Datagram Protocol的缩写,该协议不需要连接,不稳定传输,面向数据报,全双工,简单且高效,但是它的数据载荷较小,一般适用于以下场景:●包总量较少的通信(DNS、SNMP等)●视频、音频等多媒体通信...

  • TCP/IP网络编程---Linux系统下的TCP套接字编程

    0指的是满足PF_INET和SOCK_STREAM条件的协议IPPROTO_TCP int udp_socket = socket(PF_INET, SOCK_DGRAM, 0); 0指的是满足PF_INET和SOCK_DGRAM条件的协议IPPROTO_UDP 第三章 地址族与数据序列 3.1 分配给套接字的IP...

Global site tag (gtag.js) - Google Analytics