手把手教你玩转网络编程模型之完成端口(CompletionPort)篇参照.pdfVIP

  • 1
  • 0
  • 约4.42万字
  • 约 26页
  • 2021-11-28 发布于福建
  • 举报

手把手教你玩转网络编程模型之完成端口(CompletionPort)篇参照.pdf

手把手教你玩转网络编程模型系列之三 完成端口 (CompletionPort) 篇 By PiggyXP( 小猪 ) 前言 完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文 档总是在酝酿之中 ……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚 ….. 这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的编程模型方方面面的信息, 从 API 的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋 友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用 MFC 编写的图形界面的示例代码。 我的初衷是希望写一份互联网上能找到的最详尽的关于完成端口的教学文档,而且让对 Socket 编程 略有了解的人都能够看得懂,都能学会如何来使用完成端口这么优异的网络编程模型,但是由于本人水平 所限,不知道我的初衷是否实现了,但还是希望各位需要的朋友能够喜欢。 由于篇幅原因,本文假设你已经熟悉了利用 Socket 进行 TCP/IP 编程的基本原理,并且也熟练的掌 握了多线程编程技术,太基本的概念我这里就略过不提了,网上的资料应该遍地都是。 本文档凝聚着笔者心血,如要转载,请指明原作者及出处,谢谢!不过代码没有版权,可以随便散播 使用,欢迎改进,特别是非常欢迎能够帮助我发现 Bug 的朋友,以更好的造福大家。 ^_^ 本文配套的示例源码下载地址(在我的下载空间里) / ( 里面的代码包括 VC++2008/VC++2010 编写的完成端口服务器端的代码, 还包括一个对服务器端 进行压力测试的测试代码,都是经过我精心调试过,并且带有非常详尽的代码注释的。当然,作为教学代 码,为了能够使得代码结构清晰明了,我还是对代码有所简化,如果想要用于产品开发,最好还是需要自 己再完善一下,另外我的工程是用 2010 编写的,附带的 2008 工程不知道有没有问题,但是其中代码都 是一样的,暂未测试 ) 忘了嘱咐一下了,文章篇幅很长很长,基本涉及到了与完成端口有关的方方面面,一次看不完可以分 好几次,中间注意休息,好身体才是咱们程序员最大的本钱! 对了,还忘了嘱咐一下,因为本人的水平有限,虽然我反复修正了数遍,但文章和示例代码里肯定还 有我没发现的错误和纰漏,希望各位一定要指出来,拍砖、喷我,我都能 Hold 住,但是一定要指出来, 我会及时修正,因为我不想让文中的错误传遍互联网,祸害大家。 OK, Let ’s go ! Have fun! 目录: 1 . 完成端口的优点 2 . 完成端口程序的运行演示 3 . 完成端口的相关概念 4 . 完成端口的基本流程 5 . 完成端口的使用详解 6 . 实际应用中应该要注意的地方 一. 完成端口的优点 1. 我想只要是写过或者想要写 C/S 模式网络服务器端的朋友, 都应该或多或少的听过完成端口的大名吧, 完成端口会充分利用 Windows 内核来进行 I/O 的调度,是用于 C/S 通信模式中性能最好的网络通信 模型,没有之一;甚至连和它性能接近的通信模型都没有 。 2. 完成端口和其他网络通信方式最大的区别在哪里呢? (1) 首先,如果使用“同步”的方式来通信的话,这里说的同步的方式就是说所有的操作都在一个线 程内顺序执行完成,这么做缺点是很明显的:因为同步的通信操作会阻塞住来自同一个线程的任何其 他操作, 只有这个操作完成了之后, 后续的操作才可以完成; 一个最明显的例子就是咱们在 MFC 的界 面代码中,直接使用阻塞 Socket 调用的代码,整个界面都会因此而阻塞住没有响应!所以我们不得

文档评论(0)

1亿VIP精品文档

相关文档