wsaasyncselect函数详解

wsaasyncselect函数详解

ID:8973264

大小:37.50 KB

页数:5页

时间:2018-04-13

wsaasyncselect函数详解_第1页
wsaasyncselect函数详解_第2页
wsaasyncselect函数详解_第3页
wsaasyncselect函数详解_第4页
wsaasyncselect函数详解_第5页
资源描述:

《wsaasyncselect函数详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、WSAAsyncSelect()函数详解WSAAsyncSelect()简述:通知套接口有请求事件发生.#includeintPASCALFARWSAAsyncSelect(SOCKETs,HWNDhWnd,unsignedintwMsg,longlEvent);s标识一个需要事件通知的套接口的描述符.hWnd标识一个在网络事件发生时需要接收消息的窗口句柄.wMsg在网络事件发生时要接收的消息.lEvent位屏蔽码,用于指明应用程序感兴趣的网络事件集合.注释:本函数用来请求WindowsSocketsDLL为窗口句柄发一条消息-

2、无论它何时检测到由lEvent参数指明的网络事件.要发送的消息由wMsg参数标明.被通知的套接口由s标识.本函数自动将套接口设置为非阻塞模式.lEvent参数由下表中列出的值组成.值意义FD_READ欲接收读准备好的通知.FD_WRITE欲接收写准备好的通知.FD_OOB欲接收带边数据到达的通知.FD_ACCEPT欲接收将要连接的通知.FD_CONNECT欲接收已连接好的通知.FD_CLOSE欲接收套接口关闭的通知.启动一个WSAAsyncSelect()将使为同一个套接口启动的所有先前的WSAAsyncSelect()作废.例如,要接收读写通知,应

3、用程序必须同时用FD_READ和FD_WRITE调用WSAAsyncSelect(),如下:rc=WSAAsyncSelect(s,hWnd,wMsg,FD_READ

4、FD_WRITE);对不同的事件区分不同的消息是不可能的.下面的代码将不会工作;第二个调用将会使第一次调用的作用失效,只有FD_WRITE会通过wMsg2消息通知到.rc=WSAAsyncSelect(s,hWnd,wMsg1,FD_READ);rc=WSAAsyncSelect(s,hWnd,wMsg2,FD_WRITE);如果要取消所有的通知,也就是指出WindowsSockets

5、的实现不再在套接口上发送任何和网络事件相关的消息,则lEvent应置为0.rc=WSAAsyncSelect(s,hWnd,0,0);尽管在本例中,WSAAsyncSelect()立即使传给该套接口的事件消息无效,仍有可能有消息等在应用程序的消息队列中.应用程序因此也必须仍准备好接收网络消息-即使消息作废.用closesocket()关闭一个套接口也同样使WSAAsyncSelect()发送的消息作废,但在closesocke()之前队列中的消息仍然起作用.由于一个已调用accept()的套接口和用来接收它的侦听套接口有同样的属性,任何为侦听套接口设

6、置的的WSAAsyncSelect()事件也同样对已接收的套接口起作用.例如,如果一个侦听的套接口有WSAAsyncSelect()事件FD_ACCEPT,FD_READ,FD_WRITE,则任何在那个侦听的套接口上接收的套接口将也有FD_ACCEPT,FD_READ,FD_WRITE事件,以及同样的wMsg的值.若需要不同的wMsg及事件,应用程序应调用WSAAsyncSelect(),将已接收的套接口和想要发送的新消息作为参数传递.当某一套接口s上发生了一个已命名的网络事件,应用程序窗口hWnd会接收到消息wMsg.wParam参数标识了网络事件

7、发生的套接口.lParam的低字指明了发生的网络事件.lParam的高字则含有一个错误代码.该错误代码可以是winsock.h中定义的任何错误.错误代码和事件可以通过WSAGETSELECTERRORH和WSAGETSELECTEVENT宏从lParam中取出.定义如下:#defineWSAGETSELECTERROR(lParam)HIWORD(lParam)#defineWSAGETSELECTEVENT(lParam)LOWORD(lParam)注意:在accept()调用和为改变事件或wMsg的WSAAsyncSelect()调用中有一个计时

8、窗口.应用程序如果需要给侦听的和调用过accept()的套接口以不同的wMsg,它就应该在侦听的套接口上请求FD_ACCEPT事件,然后在accept()调用后设置相应的事件.由于FD_ACCEPT从不发送给已连接的套接口,而FD_READ,FD_WRITE,FD_OOB及FD_CLOSE也从不发送给侦听套接口,所以不会产生困难.使用以上的宏将最大限度的提高应用程序的可移植性.返回的可能网络事件如下:值意义FD_READ套接口s准备读FD_WRITE套接口s准备写FD_OOB带外数据准备好在套接口s上读.FD_ACCEPT套接口s准备接收新的将要到来

9、的连接.FD_CONNECT套接口s上的连接完成.FD_CLOSE由套接口s标识的连接已关闭.返回值:0若应

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

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

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