WSAAsyncSelect 模型 - 还是接着以前的socket、 部分继续研究, 近期将精力 放在各种模型上面,比较缺点,实现出来

  WSAAsyncSelect 模型允许应用程序以windows消息的形式接受网络事件通知

这个模型是为了适应windows的 消息驱动环境设置的, 对性能要求不高的网络

应用程序采用这个模型,MFC的CSoket采用这个模型

 

WSAAsyncSelect 函数会自动把函数设置为非阻塞模式,并且为套接字绑定一个窗口句柄

当有网络时间发生时,向这个窗口发消息

int WSAAsyncSelect(

SOCKET s, // 需要设置的套接字句柄

 

HWND hWnd, // 指定一个窗口句柄

// 套接字的通知消息将被发送到与其对应的窗口过程中

 

u_int wMsg, // 网络事件

// 可以使用WM_USER以上的数值中任意选择一个做为ID

 

long IEvent // 指定哪些通知码需要发送

);

最后一个参数IEvent 指定要发送的通知码

FD_READ 接收到对方发过来的数据包,表明这时可以去读套接字了

FD_WRITE 数据缓冲区满后再次变空时,WinSock接口通过该 通知码通知应用程序

表示可以发送数据了(短时间内发送数据过多,便会造成数据缓冲区变满)

FD_ACCEPT 监听中的套接字检测到有链接进入

FD_CONNECT - 如果用套接字连接对方的主机。当连接动作完成以后会接收到这个通知

FD_CLOSE   - 检测到套接字对应的连接被关闭

 

::WSAAsyncSelect(sListen, hWnd, WM_SOCKET, FD_ACCEPT|FD_CLOSE); //WM_SOCKET 自定义消息

 

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

wPARAM - 发生网络事件的套接字句柄

lParam - 参数的低字位指定了发生的网络事件,高字节包含了任何可能出现的错误代码

 

WSAGETSELECTERROR WSAGETSELECTEVENT 将这些信息给出来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值