WSAAsyncSelect 说明

       这个函数提供的是一种异步I/O模型。利用这个模型,应用程序可以在一个套接字上 接收以WINDOWS消息为基础的网络事件通知。 要想使用WSAAsyncSelect模型,在应用程序中,首选必须使用CreateWindow函数创建一个窗口,再为窗口提供一个例程支持函数。也可以使用一个对话框,为它提供一个对话例程。需要注意的是多个事件务必要在套接字上一次注册。还有就是,一旦在某个套接字上允许了事件通知,那么以后除非明确调用closesocket命令,或者由应用程序针对那个套接字调用WSAAsyncSelect,从而更改了注册的网络事件类型,否则的话,事件通知会永远有效!若将IEent参数设置为0,效果相当于停止套接字上的所有网络事件通知。

      如果应用程序对一个套接字调用了WSAAsyncSelect,那么套接字的模式会从“锁定”自动变为“非锁定”。我们就通过判断uMsg参数指定的用户自定义窗口消息,来判断网络事件类型(由lParam参数的低字节指出)何时在套接字上发生,然后在去做相应的处理。比如,FD_READ消息,我们就可以知道有数据读入,这时候我们就可以做读入处理了。

      对于WSAAsyncSelect所相对应的窗口例程,它的hWnd参数指定的是WSAAsyncSelect所对应的窗口的句柄,uMsg指出需要对那些消息进行处理。wParam参数指定在其上面发生了一个网络事件的套接字。lParam参数高字节指出可能出现的任何错误代码。低字节指出已经发生了什么网络事件。
#define WSAGETSELECTERROR(lParam)       HIWORD(lParam)
#define WSAGETSELECTEVENT(lParam)       LOWORD(lParam)

     作为FD_WRITE事件通知,当建立连接(connect),或者接受连接(accept),或者是发送数据失败时候,所以一个应用程序,如果在发送数据失败时,就应该用另一条FD_WRITE通知应用程序再次发送数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值