下载 >  开发技术 >  Web开发 > 代码客:G-TcpServer(IOCP) 1.0 正式版及Demo源码

代码客:G-TcpServer(IOCP) 1.0 正式版及Demo源码 评分:

说明 一、受限制库Dll和lib说明: 库文件G-TcpServer.lib、G-TcpServer.Dll是受限制的试用版本和Demo配套。 1、最大连接不能超过50 2、发送字节数不能超过50 3、不能设置0读投递、无超时机制 4、其他功能限制 二、版本解读说明 1、版本名带T的表示是受限制的试用版 2、版本名带bata表示非正式版 3、版本名带WChar表示支持WideChar 4、版本号以时间格式累加计数(60进1)和显示 三、文件“G-TcpServer无限制体验版.exe”是无限制的体验版。 四、文件夹 1、Demos文件夹是VC Lib、Dll库及Delphi2010的例程源码,供开发学习 2、G-Sockets文件夹是Lib和D ll库的Delphi和VC的头文件 3、Release\G-Sockets\Dll文件夹是动态库的输出文件夹 4、Release\G-Sockets\Lib文件夹是静态库的输出文件夹 1、模块包含处理线程、工作线程和看守线程。 工作线程负责IO投递工作,并响应投递返回,再把接收的数据投递给处理线程,处理线程调用回调函数给应用层,以此可以在通讯层和应用层之间现实0拷贝数据的功能。模块只有一个看守线程,负责:a、响应Accept事件并投递接受队列;b、效验接受超时(即只连接不发数据)断开连接,防止空连接;c、效验空闲超时(即心跳超时)断开连接。 按工作量来分,最繁重的是处理线程,其次是工作线程,最闲的是看守线程。可通过OnThread事件回调函数设置线程权限。在此线程模式下,应用层可以在回调函数里处理数据而不必再建立另外的数据处理线程池。 2、线程平衡 为使连接能平衡使用处理线程,每个连接同时只有一个处理线程处理工作线程投递过来的IO返回事件并调用回调函数通知应用层。 3、收发平衡 为使连接能平衡使用IO设备,每个连接同时只能投递一个读请求,并通过线程平衡机制保证接收的数据是按顺序的被处理线程处理及通过回调函数传递给应用层;同时也只能投递一个写请求,其余写请求都按顺序放在写队列里面。读写同步都使用临界段。 4、0拷贝技术 接收数据0拷贝看1项;提供GTcpSvr_AllocGBuf()、GTcpSvr_FreeGBuf()和GTcpSvr_PostSendGBuf()三个函数实现发送数据的0拷贝。 5、0读投递 为避免内核锁定分页内存过多,可通过设置来采用0读投递来降低吞吐性能从而实现大连接量。 6、HndData回收 HndData回收有多种方法,但额外会在收发数据这两个频率操作上增加工作量,因此尽量避免在这两个操作时做太多的工作是有必要的。模块均不采用“投递计数”或“投递链表”的方式来判断回收HndData的时机,而是一旦断线立即回收,其他未决投递继续返回时只处理IoData,不对HndData做任何写操作。同时为避免HndData刚收回来但其未决投递还没有完全返回之前就立即被利用的可能性,HndData池采用了FIFO双锁并发链表,该链表通过ExNumber值来实现在最大连接情况下HndData池还有ExNumber个数量使链表不为NULL,通过设置ExNumber数量可实现控制链表末端的HndData出列时间,在这个时间内可以保证断开刚回收的HndData的未决投递能够完全返回。 HndData池,初始时如下: HD1 + HD2 + HD... + HDMaxConnection + HDEx1 + HDEx2 + HDEx... + HDExNumber | | Head------------------------------------------------------------------Tail 达到最大连接时如下: HDEx1 + HDEx2 + HDEx... + HDExNumber | | Head---------------------------Tail 断开回收一个HndData(HD)后如下: HDEx1 + HDEx2 + HDEx... + HDExNumber + HD | | Head-------(需要T时间HD才能出列)------Tail 注:T可以通过控制ExNumber值来实现,假定每秒最大可以处理C个连接和断开,需要延时T秒所有未决投递才会完全回收,那么:ExNumber = T * (MaxConnection / C)。实际上每个连接未决投递非常少(因为读写是单投递的),并且工作线程并不处理数据工作量不大,因此T很短,模块默认是3秒。对于服务器而已,一秒能接受的连接量是可知预计的,模块默认是1万,假定MaxConnection=C所以ExNumber是3万。但实际应用中,正常情况下连接率远少于1万/S,尤其是长连接的服务器,即使是短连接的服务器也不会发生这样的连接率。可能的情况是DOS,如果是影响也不大,因为还有MaxConnection控制,超过这个数的连接就立即被CloseSocket了。和频率高的数据收发相比,断线、连接的频率远少于它,在频率低的地方上多做多点工作总比在频率高的地方多做一点工作的好。 7、可伸缩性 IoData数量可根据初始需要设置,资源不足时模块自动向系统申请内存。为保证HndData的安全性,HndData池还设置了延时出列,刚回收的HndData入列时间必须超过3(或更长)秒钟,如果未达到3秒的,模块自动向系统申请内存。 8、内存管理 IoData和HndData均采用VirtualAlloc和VirtualFree来向系统操作内存。IoData池采用原子函数InterlockedCompareExchange来操作进出栈。HndData采用单向FIFO双锁并发链表来管理出入列操作。其他小内存需求的均采用静态数组或new操作。 五、内存需求 每个IoData等于一个分页内存大小,信息头大小为36Byte,有效使用内存是4060Byte,因此对GTcpSvr_AllocGBuf获得的内存写入时不应该超过4060(调用GTcpSvr_GetGbufSize获得),所有IoData占用系统内存是:IoDataCount * PageSize(4096)。每个HndData大小是128Byte,加上每个Socket分配时耗内存约是:540Bytes(此为估计值,应以MS技术文档为准),所有HndData耗系统内存是:HndDataCount * MAX_HNDDATA_AND_SOCKET_SIZE(128 + 540)。其他变量和数组可能耗得内存在10M之下。 综上,整个模块需求内存量是:UseMemSize = IoDataCount * PageSize + HndDataCount * MAX_HNDDATA_AND_SOCKET_SIZE + 10M。
...展开详情收缩
2010-04-29 上传大小:279KB
分享
收藏 举报

评论 共9条

cdhumingyin 很好的资源 ,有一定的参考价值
2014-08-20
回复
qjsofa 有DLL,源码不全,参考价值不大
2014-03-07
回复
u011225925 源码不全,参考价值有待提高
2013-11-02
回复
213yy 感谢分享,有DLL,源码不全,参考价值不大
2013-07-27
回复
jxljk0816 源码不全,参考价值不大
2013-07-06
回复
time167 源码一般,价值不大
2013-06-02
回复
ilyzsq 有DLL,源码不全,参考价值不大
2013-05-09
回复
hncsylg_ylg 很好,很有参考价值。
2013-04-19
回复
penguin998 有DLL,源码不全,参考价值不大
2012-11-23
回复
TCP——ICOp 示例

网上搜集的源代码哦 很好用的 对你肯定有帮助

立即下载
Windows IOCP框架

这是一个IOCP框架,易扩展、易复用、易维护。 代码已有所变更,详情请看: http://blog.csdn.net/chenyu2202863/archive/2010/08/17/5818920.aspx

立即下载
G-Sockets(IOCP) 2.0 Demo 源码

基于IOCP模型的TCP通信组件Demo源码(包含数据封包和粘包处理源码)

立即下载
TCP服务器一个端口号可以有多个连接
IOCP加Windows线程池打造高伸缩性高性能的服务器应用
G-Sockets(IOCP) 2.5 Demo 源码 (VC2008 & Delphi7/2010)下载
Iocp模块G-Sockets 1.1 Demo源码

Iocp模块G-Sockets 1.1 Demo源码,包含粘包处理源码、客户端突破6W连接技术文档等

立即下载
IOCP的创建(入门)

非常好的入门文档,适合初学者,给自己留个记号!

立即下载
高吞吐量的一个日志函数类_用于IOCP (Delphi)

高吞吐量的一个日志函数类_用于IOCP (Delphi)

立即下载
IOCP 内存池线程池的一个例子

IOCP 内存池线程池的一个例子 主要优化在性能上 包括IO收发的重叠结构用了内存池技术

立即下载
代码:Iocp Tcp Server(G-TcpServer) 1.0 Demo源码

说明 一、本压缩包含: 1、Demo源码,位于:\Demos\G-TcpServerLibDemo\G-TcpServerLibDemo.vcproj 2、G-TcpServer模块头文件文件,位于:\G-Sockets\G-TcpServer.h(模块核心文件) 3、G-TcpServer模块Lib文件,位于:\G-Sockets\G-TcpServer.lib(模块核心文件) 4、无限制Demo exe文件:G-TcpServerLibDemo1.0.exe 二、受限制库G-TcpServer.lib说明: 库文件G-TcpServer.lib是受限制的试用版本和Demo配套。

立即下载
G-Sockets(Iocp) 1.1 Demo源码

Iocp模块G-Sockets 1.1 Demo源码,包含粘包处理源码、客户端突破6W连接技术文档等

立即下载
Iocp模块G-Sockets 1.1 Demo源码(Bug修复)

Iocp Server 完成端口服务器 突破6万连接

立即下载
Iocp模块G-Sockets 1.2 Demo 源码

Iocp TcpServer模块的Demo源码,包含客户端单机突破6W连接的设置文档,及斩包出来的源码

立即下载
Python书籍全集(16,17年最新书籍,9本超清完整非扫描版)

《Python编程:从入门到实践》2016.7 《Python项目开发实战(第2版)》2017.1 《Python核心编程(第3版)》2016.6 《Python编程快速上手:让繁琐工作自动化》2016.7 《Python游戏编程快速上手》2016.8 《Python网络数据采集》2016.3 《Python机器学习:预测分析核心算法》2017.1 《精通Python设计模式》2016.7 《用Python写网络爬虫》2016.9

立即下载
磁力种子搜索神器

磁力种子搜索神器

立即下载
数字设计:原理与实践(第4版)_[J Wakerly著][机械工业出版社][2007]

数字设计:原理与实践(原书第4版) 的中文版pdf文件

立即下载
win10远程桌面连接工具

用于win10远程桌面连接工具,方便多用户远程连接win10

立即下载
国际学术会议poster海报模板(收集整理很全很多)

国际学术会议poster海报模板(收集整理很全很多)

立即下载

热点文章

下载码下载
做任务获取下载码
取消 提交下载码
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

代码客:G-TcpServer(IOCP) 1.0 正式版及Demo源码

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
3 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: