关于IOCP的更进一步理解

原创 2004年10月29日 23:03:00

  接触IOCP的概念是在今年4月份刚开始作网游的时候,如果不是作网络编程特别是服务器编程的朋友,可能连IOCP的概念都不知道,这一点都不奇怪。正如一位网友所说的,IOCP说白了就是一个系统级队列及对这个队列进行维护的一个机制,我们只要按照基本固定的方式来调用相关的函数,就可以实现一个基于IOCP架构的服务器模型。建立IOCP的基本步骤很多资料上都有介绍,随便找找就能找到一大堆,我使用的语言是DELPHI,最终实现的服务器,测试的时候一个客户端开了3000个左右的端口来连接服务器,结果客户端先报系统资源错误了,而服务器还是好的。我想这样的测试已经基本可以满足我的游戏服务器需要了。

  基于我现在的理解,可能影响IOCP效率的主要有两点:一个是空闲的无用连接;另一个是每次发送、接收时使用的HANDLEDATA。针对于这两点,现在已经有不少人提出了比较好的实现方案。对于空闲连接,可以有专门的线程进行监视,一个连接上来多长时间一直没有发送数据上来就断开这个连接;对于每次在发送和接收时都必须创建新的HANDLEDATA则可以事先创建一个HANDLEDATA数据块的队列结构,用的时候从头部取,不用的时候从尾部存。

  如今,项目已经开展了将近七个月,总体的项目进度不能让人满意,不过,值得总结的经验还是很多的,现在公司的第二个游戏开发接近尾声,相应的服务器构架和客户端架构随着两款游戏的基本完成也算大致定了下来。不过,前方的路还很长,产品本身离我所设想的构架还相差不少距离,后面的路还很长,总之希望达到的目标是:让玩家在游戏中能找到快乐,忘掉生活的烦恼。呵呵。

关于IOCP的更进一步理解

  接触IOCP的概念是在今年4月份刚开始作网游的时候,如果不是作网络编程特别是服务器编程的朋友,可能连IOCP的概念都不知道,这一点都不奇怪。正如一位网友所说的,IOCP说白了就是一个系统级队列...
  • hejishan
  • hejishan
  • 2008年04月01日 17:12
  • 143

关于windows完成端口(IOCP)的一些理解

本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的。网...
  • analogous_love
  • analogous_love
  • 2017年07月06日 16:22
  • 1380

一些关于IOCP的理解

IOCP 这篇博客主要是介绍IOCP的一些开发难点,以及自己的经验,需要对IOCP有一定了解。 首先,给出一条链接,是讲IOCP很好的demo:http://www.codeproject.com...
  • fly_sky010
  • fly_sky010
  • 2015年05月16日 22:29
  • 332

关于构造函数的理解

代码 1(父类和子类都自定义构造函数):class father { public: father(int agee):age(agee) { cout...
  • lh1573378488
  • lh1573378488
  • 2016年09月10日 10:36
  • 373

Windows IOCP

Windows IOCP IOCP全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的Windows API,它可以高效地将I/O事件通知给应用程序,类似...
  • GeassYan01
  • GeassYan01
  • 2015年06月12日 14:26
  • 1710

关于线程的理解

1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完...
  • u010214269
  • u010214269
  • 2015年08月29日 23:27
  • 804

[摘录]IOCP从创建、初始化、接收和发送过程

IOCP从创建、初始化、接收和发送过程
  • bambuz
  • bambuz
  • 2010年11月21日 08:31
  • 714

IOCP使用小结

很多知识,只有自己亲自实践了才知道坑在哪里。 socket是内核对象句柄,每次对socket执行操作,需要用户对象到内核对象的转换,执行完成返回结果,需要内核对象到用户对象的转换。 IOCP的中文名称...
  • blwinner
  • blwinner
  • 2016年10月21日 16:05
  • 1223

IOCP 基本模型 事例

送上事例前先回忆一下IOCP的步骤 1、创建一个完完成端口 2、创建一个线程A 3、A线程循环调用GetQueuedCompletionStatus()函数来得到IO操作结果,这个函数是阻塞函数 4、...
  • machuanfei_c
  • machuanfei_c
  • 2016年01月09日 21:29
  • 897

java 理解main方法

理解main方法 方法的定义格式 public static 返回值类型 方法名称(参数列表) 之前的方法定义上都增加了static关键字,为什么要增加static关键字? ...
  • sqc3375177
  • sqc3375177
  • 2015年04月20日 10:52
  • 1199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于IOCP的更进一步理解
举报原因:
原因补充:

(最多只允许输入30个字)