通用高机能 Windows Socket 组件 HP-Socket v2.2.2 更新公布

    添加时间:2013-7-12 点击量:


      HP-Socket 是一套通用的高机能 Windows Socket 组件包,包含办事端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛实用于 Windows 平台的 TCP 通信体系。HP-Socket 对通信层实现完全封装,上层应用不必存眷通信层的任何细节;HP-Socket 供给基于事务通知模型的 API 接口,能很是简单高效地整合到各类应用法度中;别的,为了让大师能更便利的进修 HP-Socket,特此精心建造了一个功能测试示例(Test Echo)一个机能测试示例(Test Echo-PFM)一个 PULL 模型测试示例(Test Echo-Pull),用户可以经由过程这两个测试示例入手,敏捷把握组件的设计思惟和应用办法。


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


    通用性



    • 通信组件的独一职责就是接管和发送字节俭,绝对不克不及参与上层和谈解析等工作;

    • 与上层应用者解耦、互不依附,组件与应用者经由过程操纵接口和器接口进行交互,组件实现操纵接口为上层供给操纵办法;应用者实现器接口把本身注册为组件的 Listener,接管组件通知。是以,任何应用者只要实现了器接口都可以应用组件;另一方面,甚至可以本身从头写一个实现体式格式完全不合的组件实现给应用者调用,只要该组件遵从组件的操纵接口,这也是 DIP 设计原则的表现。


    可用性


      可用性对所有通用组件都是至关首要的,若是太难用还不如本身重头写一个来得便利。是以,组件的操纵接口和器接口设计得尽量简单易用(通俗来说就是“傻瓜化”),这两个接口的首要办法均不跨越 5 个。别的,组件完全封装了所有的底层 Socket 通信,上层应用看不到任何通信细节,不必也不克不及干涉干与任何通信操纵,Socket 连接被抽象为 Connection ID,该参数作为连接标识供给给上层应用辨认不合的连接。


    高机能


      作为底层的通用组件,机能题目是必须推敲的,绝对不克不及成为体系的瓶颈。而另一方面,从实际出发,按照客户端组件与办事端组件的机能请求采取不合的 Socket 模型。组件在设计上充沛推敲了机能、实际应用情景、可用性和实现错杂性等身分,确保满足机能请求的同时又不会写得太错杂。做出以下两点设计决定计划:



    • 客户端:在零丁线程中实现 Socket 通信交互。如许可以避免与主线程或其他线程彼此干扰;I/O 模型选择 Event Select 通信模型。

    • 办事端:采取 Windows 平台效力高的 IOCP 通信模型;哄骗缓存池技巧,在通信的过程中,凡是须要频繁的申请和开释内存缓冲区,建树了动态缓存池, 只有当缓存池中没有可用对象时才创建新对象,而当缓存对象过多时则会紧缩缓存池;别的,组件的动态内存经由过程私有堆(Private Heap)机制分派,避免与 new / malloc 竞争同时又削减内存空洞。


    伸缩性


      可以按照实际的应用景象请求设置组件的各项机能参数(如:工作线程的数量、各类缓存池的大小、收发缓冲区的大小、Socket 队列的大小、Accep 派发的数量以及心跳搜检的间隔等)。


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




     更新记录:


    v2.2.2 更新


      > 优化心跳检测相干功能:


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



    1. IServerSocket 和 IClientSocket 的 Get/SetKeepAliveTimes() 办法改为 Get/SetKeepAliveTime()

    2. CIocpServer 和 CClientSocket 的默认 KeepAliveTime 属性改为 5000

    3. CIocpServer 和 CClientSocket 的默认 KeepAliveInterval 属性改为 3000


    v2.2.1 更新


    > PULL 模型支撑:


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



    1. ISocketListener 增长 PULL 模型数据接管通知办法 OnReceive(dwConnID, int)

    2. 增长 PULL Socket 接口 IPullSocket,该接口的 Fetch(dwConnID, pBuffer, iLength) 办法用于抓取通信数据

















    > Server:


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



    1. 办事端 Socket 接口 ISocketServer 改名为 IServerSocket

    2. 增长 PULL Server Socket 器抽象类 CPullServerSocketListener

    3. 增长 PULL Server Socket 接口 IPullServerSocket

    4. 增长 PULL Server Socket 实现类 CIocpPullServer

















    > Client:


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



    1. 客户端 Socket 接口 ISocketClient 改名为 IClientSocket

    2. 客户端 Socket 实现类 CSocketClient 改名为 CClientSocket

    3. 增长 PULL Client Socket 器抽象类 CPullClientSocketListener

    4. 增长 PULL Client Socket 接口 IPullClientSocket

    5. 增长 PULL Client Socket 实现类 CPullClientSocket  

















    > 其它更新:
    -----------------



    1. 增长 PULL Socket 测试法度 TestEcho-Pull

    2. 在 SocketHelper.h (.cpp) 中添加若干帮助布局体



















    > 进级申明:
    -----------------



    1. 应用 HP-Socket v2.1.1 的应用法度可以安然进级到 v2.2.1

    2. 因为 ISocketServer、ISocketClient 和 CSocketClient 的名称已批改,是以,应用法度须要对引用的名称和包含的头文件名作响应批改











     相干博文:


    《高机能 Windows Socket 办事端与客户端组件(源代码及测试用例)


    《基于 IOCP 的通用异步 Windows Socket TCP 高机能办事端组件的设计与实现


    《通用异步 Windows Socket TCP 客户端组件的设计与实现


    CodeProject

    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: