欢迎来到天天文库
浏览记录
ID:27571763
大小:369.07 KB
页数:11页
时间:2018-12-03
《wsaasyncselectio模型的程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、WSAASYNCSELECTI/O模型的程序设计通过木次实验,掌握winsock提供了WSAASYNselect异步I/O模型,利用这个模型,应用程序可在一个套接字上,接收以windows消息为基础的网络事件通知。实验任务根据实验的耍求完成,先闕出实验程序的整体框架的流程阁,明确步骤后。根据各步骤编写和应的程序,完成后,进行调试,修改,直至完成整个实验报告,最后撰写实验报告。三.实验设计方案在应用程序中,首先必须用CreateWindow函数创建一个窗口,再为该窗II提供一个窗口例程支持函数(winproc)。应用程序在一个套接字上成功调用了WSAAs
2、ynselect之后,应用程序会在与hwnd窗口句柄参数对应的窗口例程屮以windows消总形式,接受网络事件通知。窗口例程windowPro的Wparam参数指定在其上面发生了一个网络事件的套接字。lParam的低字(低位字)指定了已发生的网络事件,而IParam参数的高字(高位字)包含了可能出现的任何错误代码,可用两个特殊的宏去获取低位字,高位字的值。三.算法,流程图及关键代码说明屏步复用I/O模型的说明:异步I/O复用模型♦Windows消息机制Winsock提供了一个有用的异步T/0模型。利用这个模型,应用程序可在一个套接字上,接收以Windo
3、ws消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型最早岀现于Winsock的1.1版本中,用于帮助应用程序开发者面向一些早期的16位Windows平台(如WindowsforWorkgroups),适应其“落后”的多任务消息环境。应用程序仍可从这种模型中得到好处,特别是它们用••个标准的Windows例程(常称为"WndProc"),对窗口消息进行管理的时候。♦函数定义intWSAAsyncSelect(SOCKETs,HWNDhWnd,unsignedintwMsg,longIEvent)值含义
4、FDREAD期望在套接字s上收到数据时接到通知FDWRITE期望在套接字s上可发送数据时接到通知FDOOB期望在套接字S上有带外数据到达时接到通知FDACCEPT期望在套接字S上有外来连接时接到通知FDCONNEC期望在套接字S上连接建立完成时接到通知TFDCLOSE期望在套接字$关闭时接到通知WSAAsyncSclcct是简单的一种WinsockI/O模型(之所以说它简单是因为一个主线程就搞定了)。这里,我们需耍做的是:1.在WMCREATE消息处理函数屮,初始化WindowsSocketlibrary,创建监听套接字,绑定,监听,并且调用WSAAs
5、yncSelect函数表示我们关心在监听套接字上发生的FD_ACCEPT事件;2.自定义一个消息WM_SOCKET,—旦在我们所关心的套接字(监听套接字和客户端套接字)上发生了襄个事件,系统就会调用WndProc并且message参数被设置为WM_SOCKET;3.在WM_SOCKET的消息处理函数屮,分别对R)_ACCEPT、H)_KEAD和ED_CLOSE事件进行处理;4.在窗口销毁消息(WM_DESTROY)的处理函数中,我们关闭监听套接字,清除WindowsSocketlibrary以下为各种I/O模型的介绍与WSAAsyncSelect模型原
6、理阁I/O模型阻塞I/O非阻塞I/OI/O复用异步I/O复用发起检查检查注册检查检查检查就绪发起通知发起完成完成完成完成WSAAsyncSelect模型原理图WSAAsyncSelect模型原理程序设计流程图:①对流程阁进行解析:首先,我们得用描述主窗口的参数填充WNDCLASSEX结构,注册窗口类,之后便是创建主窗口,将主窗口显示岀来(出错与否),然后创建套接字,WSAAsyncSelect,绑定套接字到木地机器,指定监听的端U号,创建监听套接字,进入监听模式,最后消息循环,退出系统。②代码及说明#include"••/common/initsock
7、.h”#include8、EDRAW9、CS_VREDRAW;wndclass.lpfnWndProc=WindowPro
8、EDRAW
9、CS_VREDRAW;wndclass.lpfnWndProc=WindowPro
此文档下载收益归作者所有