WSAASYNCSELECTIO模型地程序设计

WSAASYNCSELECTIO模型地程序设计

ID:39178278

大小:258.50 KB

页数:10页

时间:2019-06-26

WSAASYNCSELECTIO模型地程序设计_第1页
WSAASYNCSELECTIO模型地程序设计_第2页
WSAASYNCSELECTIO模型地程序设计_第3页
WSAASYNCSELECTIO模型地程序设计_第4页
WSAASYNCSELECTIO模型地程序设计_第5页
资源描述:

《WSAASYNCSELECTIO模型地程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档WSAASYNCSELECTI/O模型的程序设计一.实验目的通过本次实验,掌握winsock提供了WSAASYNselect异步I/O模型,利用这个模型,应用程序可在一个套接字上,接收以windows消息为基础的网络事件通知。二.实验任务根据实验的要求完成,先画出实验程序的整体框架的流程图,明确步骤后。根据各步骤编写相应的程序,完成后,进行调试,修改,直至完成整个实验报告,最后撰写实验报告。三.实验设计方案在应用程序中,首先必须用CreateWindow函数创建一个窗口,再为该窗口提供一个窗口例程支持函数(winp

2、roc)。应用程序在一个套接字上成功调用了WSAAsynselect之后,应用程序会在与hwnd窗口句柄参数对应的窗口例程中以windows消息形式,接受网络事件通知。窗口例程windowPro的Wparam参数指定在其上面发生了一个网络事件的套接字。1Param的低字(低位字)指定了已发生的网络事件,而1Param参数的高字(高位字)包含了可能出现的任何错误代码,可用两个特殊的宏去获取低位字,高位字的值。四.算法,流程图及关键代码说明异步复用I/O模型的说明:标准文案实用文档异步I/O复用模型Winsock提供了一个有用

3、的异步I/O模型。利用这个模型,应用程序可在一个套接字上,接收以Windows消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型最早出现于Winsock的1.1版本中,用于帮助应用程序开发者面向一些早期的16位Windows平台(如Windows for Workgroups),适应其“落后”的多任务消息环境。应用程序仍可从这种模型中得到好处,特别是它们用一个标准的Windows例程(常称为"WndProc"),对窗口消息进行管理的时候。标准文案实用文档WSAAsyncS

4、elect是简单的一种WinsockI/O模型(之所以说它简单是因为一个主线程就搞定了)。这里,我们需要做的是:1.在WM_CREATE消息处理函数中,初始化WindowsSocketlibrary,创建监听套接字,绑定,监听,并且调用WSAAsyncSelect函数表示我们关心在监听套接字上发生的FD_ACCEPT事件;2.自定义一个消息WM_SOCKET,一旦在我们所关心的套接字(监听套接字和客户端套接字)上发生了某个事件,系统就会调用WndProc并且message参数被设置为WM_SOCKET;3.在WM_SOCK

5、ET的消息处理函数中,分别对FD_ACCEPT、FD_READ和FD_CLOSE事件进行处理;4.在窗口销毁消息(WM_DESTROY)的处理函数中,我们关闭监听套接字,清除WindowsSocketlibrary以下为各种I/O模型的介绍与WSAAsyncSelect模型原理图标准文案实用文档I/O模型WSAAsyncSelect模型原理图标准文案实用文档程序设计流程图:①对流程图进行解析:首先,我们得用描述主窗口的参数填充WNDCLASSEX结构,注册窗口类,之后便是创建主窗口,将主窗口显示出来(出错与否),然后创建套

6、接字,WSAAsyncSelect,绑定套接字到本地机器,指定监听的端口号,创建监听套接字,进入监听模式,最后消息循环,退出系统。②代码及说明#include"../common/initsock.h"#include#defineWM_SOCKETWM_USER+101//自定义消息CInitSocktheSock;标准文案实用文档LRESULTCALLBACKWindowProc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam);intmain(){charsz

7、ClassName[]="MainWClass";WNDCLASSEXwndclass;//用描述主窗口的参数填充WNDCLASSEX结构wndclass.cbSize=sizeof(wndclass);wndclass.style=CS_HREDRAW

8、CS_VREDRAW;wndclass.lpfnWndProc=WindowProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=NULL;wndclass.hIcon=::LoadIcon

9、(NULL,IDI_APPLICATION);wndclass.hCursor=::LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=

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

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

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