HP-SOCKET TCP/UDP通信框架库解析
项目概述:
HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器、客户端、Agent组件;其目标是提供高性能、通用性、简易性、可扩展、可定制;
鉴于此,其仅实现基本的通用框架通信、数据收发功能,供上层应用直接简单使用的接口实现;而对于数据包完整性和协议解析等未处理,
也就意味着需要应用层自己处理一些数据包构造或解析等操作;
事实上目前只能支持windows平台;
1. 对于TCP通信模式下:服务器端和Agent均采用的是异步IO模型中的完成端口模型,客户端采用的是就绪IO通告模型中的WSAEventSelect模型;
2. 对于UDP通信模式下:服务器端采用的是异步IO模型中的完成端口模型,客户端和Cast(广播或组播)均采用的是就绪IO通告模型中的WSAEventSelect模型;
以上通信模式下,客户端或广播未采用完成端口模型是考虑到实现复杂性和实际的应用场景需要,当然如果需要均采用完成端口模型也是可以的;
题外话:
Windows平台下目前已有以下几个通信模型:
1. 阻塞模式: 通过基础的socket API函数的实现为最基本的通信方式;
2. 就绪通告IO模型: Select多路复用、WSAAsyncSelect依赖窗口的事件通知、WSAEventSelect关联事件内核对象的事件通知;
3. 异步IO(重叠IO): 事件通告、回调通告、完成端口;
其中各个模型实现复杂度依次提高,性能也依次提高,故性能最好的便是完成端口,事实上完成端口不仅可以用于网络通信,
还可以用于文件或其他涉及到IO相关的场合;各个模式有优缺点,可根据应用场景采用相应的实现模型便可,很多时候可以直接使用已写好的稳定
通信框架而不一定要自己重头开始写,不过,无论怎么样均要根据在项目中的实际需要来综合考虑应该使用什么库或是自己动手去实现;
项目综述:
整体上结构清晰、类层次分明,比较容易学习,此外采用基于事件回调的方式的实现方式,这样控制组件和事件回调数据处理可以分离,便于客户更好
地进行数据处理,而无需要直到太多的细节实现,也便于扩展、实现库功能;基本上该库已封装得很好并提供了C++和C的接口(C接口也只是简单地对C++实现的接口包装)
、便于其他语言封装或扩展(分别封装在HPSocket.h和HPSocket4C.h中,可以看到导出的接口比较多,事实上好在其分别对C++接口和C接口实现各自的解决方案生成不同DLL,
导出的接口数分别约30、460;PS:其实此处一起导出到同一个DLL也是可以的,问题也不大且更方便客户更新库或上层应用,实现共享);
项目主体采用C++实现,结合部分C公共实现部分(此处C++开发方便且易地扩展,对于公共部分功能不适合放在C++类中的均用C实现,以减少类的大小和功能的
集中处理,很好地运用了面向对象程序设计的原则)(不用担心C++性能效率问题)。
HP-SOCKET TCP/UDP通信框架库解析的更多相关文章
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式宣布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件.广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式公布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...
随机推荐
- History lives on in this distinguished Polish city II 2017/1/5
原文 Some fresh air After your time underground,you can return to ground level or maybe even a little ...
- mysql 常用函数整理
1.length(字段名) 2.UNIX_TIMESTAMP(字段名) 3.FROM_UNIXTIME( 1249488000, '%Y%m%d' ) 4.ceil() 5.floor() 6.CAS ...
- juery实现贪吃蛇的游戏
今天用juery做了一个贪吃蛇的游戏,代码比较简陋,不过作为这些天学习juery的成果,非常有成就感.另外关于代码内容如有雷同不胜荣幸. 更改了下 让头和身子的颜色不一样 这样好区分些,虽然还是不怎么 ...
- window 使用vagrant搭建开发开发环境
# -*- mode: ruby -*-# vi: set ft=ruby : # All Vagrant configuration is done below. The "2" ...
- VBA笔记(四)——立即窗口的使用
开启立即窗口 方法一:视图-立即窗口 方法二:组合键<Ctrl+G> Debug.Print 可以在立即窗口打印输出
- [译]你应该知道的4种JavaScript设计模式
这里介绍下面这4种设计模式 Module Prototype Observer Singleton 每种模式有许多属性构成,在这我只强调一下几点: 1 Context: 在何种情况使用哪种模式? 2 ...
- Oracle TO_DATE 日期格式
Oracle trunc()函数的用法 --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdat ...
- 第四篇 基于.net搭建热插拔式web框架(RazorEngine实现)
在开头也是先给大家道个歉,由于最近准备婚事导致这篇文章耽误了许久,同时也谢谢老婆大人对我的支持. 回顾上篇文章,我们重造了一个controller,这个controller中用到了视图引擎,我们的视图 ...
- IntelliJ IDEA WEB项目的部署配置
以下内容是我网上找的比较全面了,其中关于facets配置很多地方都没有说明,其实很重要,我加入了自己的理解.其他来自网络.在导入一个项目有问题时,建议先创建一个正确的web项目,然后对比配置项,一般就 ...
- MVC4中基于bootstrap和HTML5的图片上传Jquery自定义控件
场景:mvc4中上传图片,批量上传,上传前浏览,操作.图片进度条. 解决:自定义jquery控件 没有解决:非图片上传时,会有浏览样式的问题; 解决方案; 1.样式 – bootstrap 的css和 ...