我的IOCP学习笔记 - 运行展示
来源:互联网 发布:男士滑雪帽 知乎 编辑:程序博客网 时间:2024/05/18 23:54
新项目终于进入收尾阶段了,现在补一篇blog。想起来我学IOCP时看见运行结果时,自然而然便会弄懂一些疑惑,所以这里展示一下运行结果。
1)工程fileIocp。如下图所示。比较简单。在代码中定义了一个结构体。运行时输入参数 nrec 表示写入到文件中此结构体的数量。写入文件时是用IOCP,然后同步读取文件进行校验。这应该是最简单的IOCP例子了。
2)工程acceptEx(服务端)和工程acceptExClient(客户端)。这个工程就是用来展示AcceptEx、GetAcceptExSockaddrs和WSASocket使用方式。函数AcceptEx的参数和函数GetAcceptExSockaddrs参数是对应的。因此程序暂时两方面:1.函数AcceptEx在建立新的连接时便会返回,2.函数AcceptEx在建立连接后切接收到数据后才会返回。
2.1)如下图是AcceptEx直接返回。客户端运行截图在此图下发。
如下图客户端运行截图。
2.2)如下图是AcceptEx在接收到数据时才返回。
注:上面说AcceptEx函数返回是指AcceptEx操作完成,相应的完成端口数据包到达,函数GetQueuedCompletionStatus返回。
如下是在键盘输入CTRL + C关闭程序。
3)工程transport(服务端)和工程transportClient(客户端),该工程用来展示函数WSASend和函数WSARecv使用。监听套接字是函数socket返回的,与客户端通信的数据收发套接字是函数accept返回的。MSDN文档说明socket函数创建的套接字默认具有重叠属性,可以直接使用相关的IOCP接口。
如下图是transport运行。transport仅仅是把transportClient发来的数据返回给transportClient。
下图是transportClient运行截图。
再下张图是CTRL+C关闭程序。
4)最后就是正式的IOCP例子。工程EasyIocp(服务端)和工程EasyClient(客户端)。二者通信方式是"4字节头部+实际数据"部分。采用这种通信方式EasyIocp在接收到数据时,自己就知道此完整数据字节数,在完整的接收完数据后就可以通知应用层数据接收完毕(这里还仅仅是例子,完整的应用还有待完善)。
下图是服务端运行截图。首先投递accept等待客户端连接,在DoAccept函数中处理客户端连接并投递recv请求。在DoRecv函数中处理数据接收,并投递send请求。数据收发逻辑也大概都如此。
下图是客户端运行截图。
最后是CTRL+C关闭应用程序截图。
- 我的IOCP学习笔记 - 运行展示
- 我的IOCP学习笔记
- 我的IOCP学习笔记 - 相关类定义
- 学习笔记:神秘的 IOCP 完成端口
- 学习笔记:神秘的 IOCP 完成端口
- 学习笔记:神秘的 IOCP 完成端口
- IOCP学习笔记
- 我的IOCP服务器
- IOCP的一些笔记
- 我所理解的IOCP
- IOCP的笔记及理解
- 我的作业展示
- 我的作品展示
- 我的学习笔记
- 我的学习笔记
- 我的学习笔记
- Windows2008新IOCP线程池学习笔记
- IOCP学习
- 字符集字符编码学习
- 3D模型格式总结
- 聚美优品面试题
- Xcode6 自动补全的问题 no completion
- java4:选择语句(selection),逻辑运算,循环(loop)
- 我的IOCP学习笔记 - 运行展示
- JAVA ----socket学习
- varnish缓存策略之director
- 剑指offer面试题(49)把字符串转换成整数
- org.springframework.web.servlet.DispatcherServlet noHandlerFound 警告: No mapping found for HTTP reque
- 写给大二学期末的我
- MediaPlayer中使用到的回调函数介绍
- 打开关闭系统图标音量、电源、网络、操作中心不能编辑解决办法
- BZOJ2326 [HNOI2011]数学作业