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更新 ***
> 组件接口调整:
------------------ IClientListener 监听器接口用 IClient* 参数取代 CONNID 参数标识 Client 组件对象
- 增加 IPullClient 接口,用作 PULL Client 组件的基接口
- IPullSocket 和 IPullClient 接口增加 Peek() 方法用于窥探缓冲区数据(不会移除缓冲区数据)
- 增加 IComplexSocketListener 监听器接口,用作 Server/Agent 组件的监听器基接口
- IComplexSocketListener 提供 OnShutdown 通知方法取代 Server/Agent 组件原来的 OnServerShutdown/OnAgentShutdown
- IClient组件增加 Get/SetExtra() 方法用于保存自定义附加数据
-
IServer 和 IAgent 组件增加“静默连接处理”相关方法:
1) DisconnectSilenceConnections():// 断开超过指定时长的静默连接 2) GetSilencePeriod():// 获取某个连接静默时间(毫秒) 3) SetMarkSilence():// 设置是否标记静默时间 4) IsMarkSilence():// 检测是否标记静默时间
> 增加 UdpCast 通信组件:
------------------ UdpClient / UdpServer 用于 C/S 模式的点对点单播通信,但在某些应用场景下,需要用到组播或广播通信
-
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)
- 增加 UdpCast 使用示例:TestUDPCast
相关推荐
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高性能服务器编程》共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP/IP通信案例;第二部分对高性能...
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()...
它提供了多种通信方式,包括TCP/IP、UDP、Unix Domain Socket等。 2.4 套接字地址 套接字地址是套接字的唯一标识符,包含IP地址和端口号两部分。IP地址用于标识主机,端口号用于标识进程。 2.5 端口号 端口号是...
- **传输层**(Transport Layer):提供端到端的数据传输服务,如TCP/UDP协议。 - **会话层**(Session Layer):管理会话,确保数据可靠传输。 - **表示层**(Presentation Layer):数据加密、压缩等功能。 - **应用...
学习.NET Socket编程的好书,资源包含Word版电子书(201页完整版),源代码,PPT,习题解答,史上最全。 目录-------------------------------------------------------- 前 言 6 第1章 进程、线程与网络协议 7 1.1 进程...
- **传输层**:例如TCP(Transmission Control Protocol)或UDP(User Datagram Protocol),负责确保数据可靠传输。 - **网络层**:如IP(Internet Protocol),负责数据包路由。 - **链路层**:负责物理传输,包括...
全书由13章组成,内容涉及到Lindx系统编程基础、TCP/UDP协议、套接字编程概念及I/O模型、高级编程中需要用到的进程问通信同步、多路复用、多线程编程和一些高级套接字控制方法、IPv6介绍以及网络安全等。...
- **定义**:用于UDP通信。 - **发送和接收数据报**。 **3.4.2 DatagramPacket类** - **定义**:表示数据报包。 **3.5 URL编程** **3.5.1 创建URL对象** - **类`URL`**: - 创建URL对象; - 获取URL组件。 **...
- **4.4.1 UDP和TCP的区别** UDP是无连接的,速度快但不保证数据可靠性;TCP是面向连接的,保证数据可靠传输。 - **4.4.2 HTTP协议** HTTP协议定义了客户端和服务端如何交互数据,使用TCP作为传输层协议。 - *...
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 ...
- **5.7 小结**:TCP/IP协议族已成为现代网络通信的标准,其设计原则和实现细节对于理解网络编程至关重要。 #### 七、Berkeley套接字 **6.1 引言** Berkeley套接字(Berkeley Sockets)是一种用于网络通信的API,...
借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;...
借助于此框架,读者可理解WinSock的具体细节,包括WindowsSockets概述、OSI网络参考模型、TCP/IP协议簇中的协议和可用的服务、WinSock网络应用程序的框架及其工作机制、WinSock的三种操作模式、socket通信机制等;...
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。 本书所有的源...
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 ...