完成端口模型程序设计

完成端口模型程序设计

ID:22298019

大小:262.22 KB

页数:10页

时间:2018-10-28

完成端口模型程序设计_第1页
完成端口模型程序设计_第2页
完成端口模型程序设计_第3页
完成端口模型程序设计_第4页
完成端口模型程序设计_第5页
资源描述:

《完成端口模型程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、完成端口模型程序设计一.实验目的通过本次实验,掌扳Windowssocket的10完成端口(I0CP)模型开发,利用编程能力,编写程序,利用服务线程,查看I/O操作的结果信息。深入丫解相关知识。二.实验任务首先查阅与完成端U模型程序设计的相关资料与技术指导,粗略制定实验的流程步骤,然后绘制程序设计的流程图,按照预先设计的流程图,进行程序的编写,在与同学老师的交流合作之卜*,进行程序的调试与修改,最后进行总结,记录调试结果,撰写相关实验报告三.实验设计方案①查阅技术相关资料②绘制程序流程图③按照以卜*步骤编写程序与调试1:创建完成端II2:将套接字与完成端U关联。3:

2、调用输入输出函数,发起重叠10操作。4:在服务线程中,等待完成端U重叠10操作结來。④总结体会与改进意见⑤撰写实验报告P4.算法,流程图及关键代码说明1.技术说明I/O完成端1I是一种内核对象。利用完成端11,套接字应用程序能够管理数百上T•个套接字。应用程序创建完成端口对象后,通过指定一定数量的服务线程,为已经完成的重叠io操作提供服务。该模型可以达到最盾的系统性能。完成端口是一种真正意义上的异步模型。在重叠I/O模型中,当WindowssocketE、/:用程序在调用WSARccv函数AS•立即返回,线程继续运行。另一线程在在完成端口等待操作结果,当系统接收数据

3、完成厄,会向完成端U发送通知,然£;应用程序对数据进行处理。为了将Windows打造成一个出色的服务器环境,Microsoft开发出了10完成端口。它需耍与线程池配合使用。服务器有两种线程模型:串行和并发模型。申行模型:单个线程等待客户端请求。当请求到來时,该线程被唤醒來处理请求。但是当多个客户端同吋向服务器发出请求吋,这些请求必须依次被请求。并发模型:单个线程等待请求到来。当请求到来时,会创建新线程来处理。但是随着更多的请求到来必须创建更多的线程。这会导致系统内核进行上K文切换花费更多的时间。线程无法即时响应客户请求。伴随着不断育客户端请求、退出,系统会不断新建和

4、销毁线程,这同样会增加系统开销。而10完成端II却可以很好的解决以上问题。它的目标就是实现高效服务器程序。与重叠T0相比较重叠10与10完成端口模型都是异步模型。都可以改善程序性能。但是它们也宥以K区别:1:在重叠10使用事件通知时,WSAWaitForMultiploEvents只能等待WSA_MAXIMUM_WAIT_EVENTS(64)个事件。这限制了服务器提供服务的客户端的数量。2:事件对象、套接字和WSAOVERLAPPED结构必须——对应关系,如粜出现一点疏漏将会导致严重的后果。创建完成端口在服务线程中,等待完成端口重叠I/O操作结果1:创建10完成端口

5、2:将套接字与10完成端口关联CrcatcIoComplctionPort(sListcnSockct,hIOPort,完成键,0);调用此函数即告诉系统:当10操作完成时,想完成端口发送一个10操作完成通知。这些通知按照FIFO方式在完成队列中等待服务线程读取。在利用10完成端口丌发套接字应用程序时,通常声明一个结构体保存与套接字相关的信息。该结构通常作为完成键传递给CrcatcIoComplctionPort用以区分与套接字相关的信息。我们可以给完成键传入任何对我们有用的信息,一般情况下都是传入一个结构的地址。3:发起重叠10操作将套接字与10完成端II关联G,

6、应用程序可以调用以卜*函数,发起重叠10操作:WSASend和WSASendTo:发送数据。WSARccv和WSARccvFrom:接收数据。在应用程序屮通常声明一个和10操作相关的结构体,它是WSAOVERLAPPED结构的扩展。用以保存每一次10操作的相关信息。4:等待重叠10操作结果:服务线程启动AS,调用GetQucucdCompletionStatus函数等待重叠10操作的完成结果。当重叠10操作完成吋,10操作完成通知被发送到完成端口上,此时函数返回。综上,在使用完成端口开发Windowssocket应用程序吋,一般需要定义两种数据结构:完成键和扩展的W

7、SAOVERLAPPED结构。完成键保存与套接字宥关的信息。在GctQucuccIComp1ctionStatus返回吋可以通过该参数获取奢接字的相关信息。这用于区分不同设备。扩展的WSAOVERLAPPED结构,保存每次发起10操作吋10操作相关的信息。当GetQucucdCompletionStatus返回时通过该参数获取套接字的10操作相关信息。5:取消异步操作。当关闭套接字时,如采此时系统还有未完成的异步操作,极用程序可以调用CancelIo函数取消等待执行的异步操作。2.流程I创建完成端口I创建服务线程.I~接受客户端请求声明芫成键结构,它包含客户端套

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。