高性能 windows socket 组件 hp-pg电子游戏网站

hp-socket 是一套通用的高性能 windows socket 组件包,包含服务端组件(iocp 模型)和客户端组件(event select 模型),广泛适用于 windows 平台的 tcp/udp 通信系统。hp-socket 对通信层实现完全封装,上层应用不必关注通信层的任何细节;hp-socket 提供基于事件通知模型的 api 接口,能非常简单高效地整合到各类应用程序中;另外,为了让大家能更方便的学习 hp-socket,特此精心制作了功能测试示例(test echo)、性能测试示例(test echo-pfm)、pull 模型测试示例(test echo-pull) 和 udp 测试示例(test echo-udp),用户可以通过这几个测试示例入手,迅速掌握组件的设计思想和使用方法。

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

通用性

  • 通信组件的唯一职责就是接受和发送字节流,绝对不能参与上层协议解析等工作;
  • 与上层使用者解耦、互不依赖,组件与使用者通过操作接口和监听器接口进行交互,组件实现操作接口为上层提供操作方法;使用者实现监听器接口把自己注册为组件的 listener,接收组件通知。因此,任何使用者只要实现了监听器接口都可以使用组件;另一方面,甚至可以自己重新写一个实现方式完全不同的组件实现给使用者调用,只要该组件遵从组件的操作接口,这也是 dip 设计原则的体现。

可用性

  可用性对所有通用组件都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,组件的操作接口和监听器接口设计得尽量简单易用(通俗来说就是“傻瓜化”),这两个接口的主要方法均不超过 5 个。另外,组件完全封装了所有的底层 socket 通信,上层应用看不到任何通信细节,不必也不能干预任何通信操作,socket 连接被抽象为 connection id,该参数作为连接标识提供给上层应用识别不同的连接。

高性能

  作为底层的通用组件,性能问题是必须考虑的,绝对不能成为系统的瓶颈。而另一方面,从实际出发,根据客户端组件与服务端组件的性能要求采用不同的 socket 模型。组件在设计上充分考虑了性能、现实使用情景、可用性和实现复杂性等因素,确保满足性能要求的同时又不会写得太复杂。做出以下两点设计决策:

  • 客户端:在单独线程中实现 socket 通信交互。这样可以避免与主线程或其他线程相互干扰;i/o 模型选择 event select 通信模型。
  • 服务端:采用 windows 平台效率最高的 iocp 通信模型;利用缓存池技术,在通信的过程中,通常需要频繁的申请和释放内存缓冲区,建立了动态缓存池, 只有当缓存池中没有可用对象时才创建新对象,而当缓存对象过多时则会压缩缓存池;另外,组件的动态内存通过私有堆(private heap)机制分配,避免与 new / malloc 竞争同时又减少内存空洞。

伸缩性

  可以根据实际的使用环境要求设置组件的各项性能参数(如:工作线程的数量、各种缓存池的大小、收发缓冲区的大小、socket 监听队列的大小、accep 派发的数目以及心跳检查的间隔等)。

  (项目澳门pg电子游戏主页:,下载地址:)


*** v3.0.1 更新 ***

 > 新增 udp 通信组件:

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

  1. 新增两个 udp 通信组件:cudpserver 为服务端组件,cudpclient 为客户端组件
  2. 服务端组件 cudpserver 采用 iocp 通信模型
  3. 客户端组件 cudpclient 采用 event select 通信模型
  4. udp 通信组件的接口与原 tcp 通信组件一致,简单实用
  5. udp 通信组件内置通信线路自动监测机制
  6. 新增 udp 通信组件示例工程 testecho-udp

> 代码重构与优化:

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

  1. 规范所有接口、类以及代码文件的命名
  2. 重构和优化了大量组件代码
  3. 服务端组件加入读写锁机制,有效平衡处理性能与安全性
  4. 服务端组件的 socket 对象缓存列表设置了锁定时间,提高访问的安全性

> 升级说明:

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

  1. 使用 hp-socket v2.2.3 的应用程序可以安全升级到 hp-socket v3.0.1
  2. 由于重命名了大量接口、类以及代码文件,因此升级时需要作相应调整

*** v2.2.3 更新 ***

 > 连接 id 的数据类型改为 ‘connid’:

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

  1. 在sockethelper.h 中定义 connid 数据类型(默认:typedef ulong_ptr connid)
  2. 应用程序可以把 connid 定义为其希望的类型(如:ulong / ulonglong 等)
  3. 为了便于移植与维护,应用程序的任何地方都应该用‘connid’类型引用连接 id

> 服务端 socket 组件支持为每个连接绑定附加数据:

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

  1. iserversocket 和 ciocpserver 增加方法 get/setconnectionextra()
  2. 通过上述两个方法,应用程序可以为每个连接绑定任意附加数据并把数据获取出来

> 其它更新:

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

  1. 放宽 ciocpserver 的最大 iocp 工作线程数目限制(64 改为 500)
  2. 服务端 socket 组件的 disconnect() 方法增加一个标识参数‘bforce’,指示是否强制断开连接
  3. 调整连接 id 的生成规则,避免生成数值为 0 的连接 id

*** 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) 中添加若干帮助结构体

9
0
评论 共 3 条 请登录后发表评论
3 楼 guaishou 2013-10-30 17:06
white_crucifix 写道
为啥会有7个顶?

这次算少了,亲~~
2 楼 white_crucifix 2013-10-30 15:50
为啥会有7个顶?
1 楼 guaishou 2013-10-30 10:18
anybody say something ...

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • hp-socket 是一套通用的高性能 windows socket 组件包,包含服务端组件(iocp 模型)和客户端组件(event select 模型),广泛适用于 windows 平台的 tcp/udp 通信系统。hp-socket 对通信层实现完全封装,上层应用...

  • hp-socket 是一套通用的高性能 windows socket 组件,提供服务端组件(iocp 模型)和客户端组件(event select 模型),广泛适用于 windows 平台的 tcp/udp 通信系统。hp-socket 对通信层实现完全封装,上层应用不必...

  • vb语言vb光盘管理系统设计(源代码 系统)本资源系百度网盘分享地址

  • h型脚架疲劳测试机sw16可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • 笔记.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 金属材料杂质自动检测设备sw17可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于mcs51单片机的微波脉冲功率测试系统本资源系百度网盘分享地址

  • vb语言vb报警管理系统设计(源代码 系统)本资源系百度网盘分享地址

  • 个人博客系统代码 java个人博客系统代码 基于springboot的个人博客系统代码 1、个人博客系统的技术栈、环境、工具、软件: ① 系统环境:windows/mac ② 开发语言:java ③ 框架:springboot ④ 架构:b/s、mvc ⑤ 开发环境:idea、jdk、maven、mysql ⑥ jdk版本:jdk1.8 ⑦ maven包:maven3.6 ⑧ 数据库:mysql 5.7 ⑨ 服务平台:tomcat 8.0/9.0 ⑩ 数据库工具:sqlyog/navicat ⑪ 开发软件:eclipse/myeclipse/idea ⑫ 浏览器:谷歌浏览器/微软edge/火狐 ⑬ 技术栈:java、mysql、maven、springboot、mybatis、ajax、vue等 2、适用人群:计算机,电子信息工程等专业的学习者等, 高分毕业设计项目,也可作为课程设计和期末大作业。本资源仅是代码的压缩包,该代码适合毕业设计、课程设计作业,所有源码均经过严格测试,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! 3、解压说明:本资源需要电脑

  • vb语言vb宾馆管理信息系统(论文 源代码)本资源系百度网盘分享地址

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • pmbok第6版英文版

global site tag (gtag.js) - google analytics
网站地图