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#. ...
随机推荐
- SQL Server存储过程创建和修改
create proc Get_Data( @Del_ID varchar(36))asselect * from Depts where DeptId=@Del_ID select * from D ...
- C++构造函数
一. 构造函数是干什么的class Counter{public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Coun ...
- UUID库
If you cannot afford to use Boost, then there is a very minimal library that I implemented which sim ...
- 错误403,You don't have permission to access /index.html on this server.
再更改apache工程路径时候,按照许多教程改了httpd.conf文件,还是不行,问题依旧存在 解决方式,你的个人文件夹的权限还没改好,看一下自己的个人文件夹的权限,是否可以读写
- LibreOffice去重复数据
菜单:数据--更多筛选---标准筛选 点开“选项”,勾上“无重复值”. 然后还可以把结果复制到其它单元格.
- maven热部署到tomcat
1添加tomcat用户,在conf/tomcat-user.xml文件下添加一个tomcat用户 <role rolename="manager-gui"/> < ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- 如何解决inline和linline-block在浏览器中的间距问题
写页面时,如果想要元素从左到右排列,但又不想使用浮动,那么很多人都会用到display:inline或者display:inline-block. 但是每次一用到这个两个属性,浏览器中浏览的时候就会有 ...
- Fedora20-32bit cross-compiling arm-linux-gcc4.3.2
目录 0 前言 1 安装arm-linux-gcc-4.3.2 2 配置 nfs 服务器 0 前言 之前在 fedora 64bit 上建立交叉编译,但由于4.4.3版本需要另装用于gdb-serve ...
- 一行神奇的javascript代码
写本篇文章的缘由是之前群里@墨尘发了一段js代码,如下: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~ ...