![]() |
---|
一、异步选择模型有什么用 |
异步选择模型可以说是对select的模型的优化,我们可以将事件投递给os用消息机制的形式来检测信号,对比select模型,在检测事件信号这方面是变成了异步,但是还是不能解决recv(send)函数执行时的阻塞 |
二、什么是消息机制 |
在Windows发生的一切操作都会装一个队列中,再被Windows来处理这些操作 |
三、异步选择模型 |
基本步骤(1).打开网络库(2).创建socket(3).bind绑定端口和地址(4).listen使套接字处于监听状态(5)WSAAsyncSelect事件投递(6)创建窗口(7)调用回调函数 |
(5)WSAAsyncSelect WSAAsyncSelect(socketserver, hWnd, UM_ASYNCSELECTMSG, FD_ACCEPT)//int WSAAsyncSelect( _In_ SOCKET s, _In_ HWND hWnd, _In_ unsigned int wMsg, _In_ long lEvent); //参数1:服务端socket 参数2:窗口的句柄 参数3:投递的消息名称(可以这样宏定义WM_USER(系统已定义的宏)+1) 参数4:绑定的事件类型(同事件选择) //返回值可以用SOCKET_ERROR检测错误 |
(7)调用回调函数 |
SOCKET sock = (SOCKET)wparam;//wparam用于接收socket 可以使用HIWORD(lparam)获取是否有错误,LOWORD(lparam)获取具体事件(可以用switch(LOWORD(lparam))来分类处理事件) |
自己写的服务端 |