没有合适的资源?快使用搜索试试~ 我知道了~
WSAAsyncSelect详细使用说明
需积分: 10 10 下载量 171 浏览量
2012-04-26
15:06:35
上传
评论
收藏 4KB TXT 举报
温馨提示
试读
6页
WSAAsyncSelect基于Windows消息机制异步I/O模型,为特定网络事件指定系统通知信息.
资源推荐
资源详情
资源评论
WSAAsyncSelect基于Windows消息机制异步I/O模型,为特定网络事件指定系统通知信息.
函数定义
int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);
(1)参数4-1Event:设定用户关心得套接口上的网络事件.形式如:1Event=FD_READ/FD_CLOSE.
网络I/O事件 简表
事件值 含义 触发条件
FD_READ 套接口有可读消息通知 recv,recvfrom,WSARecv或WSARecvFrom
FD_WRITE 套接口有可发消息通知 send,sendto,WSASend或WSASendTo
FD_OOB 套件口有外带数据消息通知 recv,recvfrom,WSARecv或WSARecvFrom
FD_ACCEPT 套接口有链接请求消息通知 accept或WSAAccept(错误码不能WSATRY_AGAIN)
FD_CONNECT 希望得到connect或多点join操作完成信息通知 无
FD_CLOSE(面向连接) 套接口关闭消息通知 无
FD_QOS 套接口QOS状态发生变化消息通知 WSAIoctl(SIO_GET_QOS)
FD_GROUP_QOS 保留 Reserved
FD_ROUTING_INTERFACE_CHANGE
函数定义
int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);
(1)参数4-1Event:设定用户关心得套接口上的网络事件.形式如:1Event=FD_READ/FD_CLOSE.
网络I/O事件 简表
事件值 含义 触发条件
FD_READ 套接口有可读消息通知 recv,recvfrom,WSARecv或WSARecvFrom
FD_WRITE 套接口有可发消息通知 send,sendto,WSASend或WSASendTo
FD_OOB 套件口有外带数据消息通知 recv,recvfrom,WSARecv或WSARecvFrom
FD_ACCEPT 套接口有链接请求消息通知 accept或WSAAccept(错误码不能WSATRY_AGAIN)
FD_CONNECT 希望得到connect或多点join操作完成信息通知 无
FD_CLOSE(面向连接) 套接口关闭消息通知 无
FD_QOS 套接口QOS状态发生变化消息通知 WSAIoctl(SIO_GET_QOS)
FD_GROUP_QOS 保留 Reserved
FD_ROUTING_INTERFACE_CHANGE
特定方向的路由接口发生改变消息通知。 WSAIoctl(SIO_ROUTING_INTERFACE_CHANGE)
FD_ADDRESS_LIST_CHANGE
得到本地地址列表上套接口协议族发生改变通知。 WSAIoctl(SIO_ADDRESS_LIST_CHANGE)
(2)参数3-wMsg:为套接口事件设定1Event通知消息通常形式(WM_USER + n)
如 #define WM_USER_SERVER WM_USER+1
(3)参数2-bWnd指定系统通知消息wMsg的窗口句柄.函数若调用成功,
WSAAsyncSelect返回0;否则返回SOCKET_ERROR,这时可用WSAGetLastError来获取错误码.
事实上,成功发送一次消息,通知机制会暂停工作直到有重新激活消息通知机制到来.才可重新激活事件.
水平触发:FD_READ,FD_OOB和FD_ACCEPT 即重新激活,需要引发消息发送的条件.
边缘触发:FD_QOS,FD_GROUP_QOS等.
同一接口多次调用WSAAsyncSelect函数,只有最后一次生效.
因此:
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_READ),加上
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_CLOSE) 并不等于
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_READ | FD_CLOSE)
FD_ADDRESS_LIST_CHANGE
得到本地地址列表上套接口协议族发生改变通知。 WSAIoctl(SIO_ADDRESS_LIST_CHANGE)
(2)参数3-wMsg:为套接口事件设定1Event通知消息通常形式(WM_USER + n)
如 #define WM_USER_SERVER WM_USER+1
(3)参数2-bWnd指定系统通知消息wMsg的窗口句柄.函数若调用成功,
WSAAsyncSelect返回0;否则返回SOCKET_ERROR,这时可用WSAGetLastError来获取错误码.
事实上,成功发送一次消息,通知机制会暂停工作直到有重新激活消息通知机制到来.才可重新激活事件.
水平触发:FD_READ,FD_OOB和FD_ACCEPT 即重新激活,需要引发消息发送的条件.
边缘触发:FD_QOS,FD_GROUP_QOS等.
同一接口多次调用WSAAsyncSelect函数,只有最后一次生效.
因此:
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_READ),加上
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_CLOSE) 并不等于
WSAAsyncSelect(s, m_hWnd, WM_USER_SERVER, FD_READ | FD_CLOSE)
剩余5页未读,继续阅读
资源评论
liangqingsong5300
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功