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#. ...
随机推荐
- mybits批量插入
<!--批量插入--> <insert id="batchSave" parameterType="java.util.List"> i ...
- 无法对 索引 'IndexName' 执行 删除,因为它不存在,或者您没有所需的权限。
先写结论: 语法: DROP INDEX 表名.索引名 如果索引明明存在..却报标题上那个错..请直接去看是否是表名与库中的不一样.. 请一定去检查一下..别问我为什么这么说.. if exists ...
- net.sf.json.JSONException: There is a cycle in the hierarchy!的解决办法
使用Hibernate manytoone属性关联主表的时候,如果使用JSONArray把pojo对象转换成json对象时,很容易出现循环的异常.解决的办法就是, 在转换json对象时忽略manyto ...
- Python:基本语法1
I.Python中的转义符注意情况 如果'本身是一个字符,则可将其用" "括起来: 如果字符串内部既有',又有",则可用转义字符\,比如: 'I\'m\"OK\ ...
- 【学习笔记】load-on-startup Servlet
创建Servlet实例有两个时机:用户请求之时和应用启动之时.应用启动之时创建的通常用于某些后台服务的Servlet.配置load-on-startup的Servlet有两种方式: 在web.xml文 ...
- Java线程的概念
1. 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...
- 为什么Java不适合游戏开发
Strawberry Cow Bear: why java sucks for game developmenthttp://strawberrycowbear.blogspot.jp/2011/02 ...
- Linux下实现秒级的crontab定时任务
crontab的格式如下 * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...
- 解决Android studio导入项目卡死
在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android studio呈现卡死的现象!当遇到这种情况时,可以看看是下面那种情况,在按照方法来解决! ...
- 3篇NeuroImage文献分析
鉴于之前读的一些文章很容易就忘掉了,故打算花点时间记录下所读的文献. 这几天花了一些时间读了3篇文献: Intersubject consistency of cortical MEG signals ...