- 7
- 0
- 约4千字
- 约 26页
- 2016-09-15 发布于江苏
- 举报
WINDOWS MFC 网络IO模型(二).ppt
WinSock IO模型(二) 回顾 套接字I/O模型 select模型 WSAAsyncSelect模型 本章目标 WSAEventSelect模型 完成端口 WSAEventSelect 模型 基本思想: 是将每个套接字都和一个WSAEVENT对象对应起来,并且在关联的时候指定需要关注的哪些网络事件。一旦在某个套接字上发生了我们关注的事件,与之相关联的WSAEVENT对象被激发。由此就可以知道对应是哪个套接字发生了网络事件,并进行相应的处理。 WSAEventSelect原型 创建WSAEVENT对象 WSAWaitForMultipleEvents WSAEnumNetworkEvents 采用WSAEventSelect的服务器动作 WSAEventSelect例子 完成端口 完成端口全称为I/O Completion Port(IOCP),IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序。与使用select()或是其它异步方法不同的是,一个套接字与一个完成端口关联了起来,然后就可继续进行正常的Winsock操作了。然而,当一个事件发生的时候,此完成端口就将被加入一个队列中。然后应用程序可以查询以得到此完成端口。 完成端口 Win32的重叠I/O机制对那些耗时的操作而言特别有用。完成端口机制针对操作系统内部进行了优化,在Windows NT和 Windows 2000上,使用了完成端口的重叠I/O机制才能够真正扩大系统的响应规模。 通常情况下,应用程序会创建一定数量的工作者线程来处理完成通知。线程数量取决于应用程序的特定需要。理想的情况是,线程数量等于处理器的数量,不过这也要求任何线程都不应该执行诸如同步读写、等待事件通知等阻塞型的操作,以免线程阻塞。 完成端口 完成端口的使用分为两步。首先创建完成端口,如以下代码所示: 完成端口 完成端口创建后,要把将使用该完成端口的套接字与之关联起来。方法是再次调用CreateIoCompletionPort ()函数, 完成端口 在创建了完成端口、将一个或多个套接字与之相关联之后,我们就要创建若干个线程来处理完成通知。这些线程不断循环调用GetQueuedCompletionStatus ()函数并返回完成通知。 当应用程序调用一个重叠操作函数时,要把指向一个overlapped结构的指针包括在其参数中。当操作完成后,我们可以通过GetQueuedCompletionStatus()函数中拿回这个指针。 完成端口 完成端口工作线程的流程如下:线程不断循环调用GetQueuedCompletionStatus ()函数并返回完成通知。当应用程序调用一个重叠操作函数时,要把指向一个overlapped结构的指针包括在其参数中。当操作完成后,可以通过GetQueuedCompletionStatus()函数中拿回这个指针。 单是根据这个指针所指向的overlapped结构,应用程序并不能分辨究竟完成的是哪个操作。 完成端口 OVERLAPPED结构类型声明如下: 完成端口 无论何时调用重叠操作函数时,总是会通过其lpOverlapped参数传递一个OVERLAPPED结构(例如WSASend、 WSARecv等函数)。这就允许你为每一个重叠调用操作设置某些操作状态信息,注意OVERLAPPED字段不要求一定是这个扩展后的结构的第一个字段。当得到了指向OVERLAPPED结构的指针以后,可以用CONTAINING_RECORD宏取出其中指向扩展结构的指针。 完成端口 使用完成端口的具体流程如下: 1.初始化Winsock 2.创建一个完成端口 3.根据服务器CPU数创建一定量的线程 4.准备好一个socket进行bind然后listen 5.进入循环accept等待客户请求 6.创建一个数据结构容纳socket和其他相关信息 7.将连进来的socket同完成端口相关联 8.投递一个准备接收的请求 使用完成端口 注意点: 1、如果重叠操作调用失败时(也就是说,返回值是SOCKET_ERROR,并且错误原因不是WSA_IO_PENDING),那么完成端口将不会收到任何完成通知。如果重叠操作调用成功,或者错误原因是WSA_IO_PENDING的错误时,完成端口将总是能够收到完成通知。 使用完成端口 注意点: 2、在套接字上使用重叠I/O接受连接的惟一API就是AcceptEx()函数。通常的同步接受函数accept()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字
您可能关注的文档
- SMT_LED_MODULE__制造工程.pptx
- SMT产业发展现状与趋势.doc
- SMT表面安装的工艺流程.doc
- SMC新型总线控制系统 培训.ppt
- SMT设备年度保养计划.xls
- SOX404条款的实施-控制例外事项与缺陷的评估框架.ppt
- SPC工序能力研究PPK form.xls
- SPC工序能力研究PPK form.xls
- SQL Server 2005 全文搜索.docx
- SQL Server2005_12数据管理__管理快照、复制.ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 2025江苏农牧科技职业学院单招数学能力检测试卷含答案详解(典型题).docx VIP
- 2025年黑龙江艺术职业学院单招语文测试模拟题库通用题库.docx VIP
- 2026年上海市初三语文一模试题汇编之古诗文阅读(教师版).docx
- 2025年江苏农牧科技职业学院单招(语文)测试试卷.docx VIP
- 《数据管理能力成熟度模型》DCMM评估内容及流程.pptx VIP
- 2025黑龙江艺术职业学院单招《英语》考前冲刺练习试题(夺冠)附答案详解.docx VIP
- (2026年)危重患者体位管理PPT课件.pptx VIP
- 2026年上海市初三语文一模试题汇编之现代文阅读(教师版).docx
- 2025黑龙江艺术职业学院单招《数学》模拟试题含完整答案详解【全优】.docx VIP
- 人教版|六年级下册体育全册教案.docx
原创力文档

文档评论(0)