FD_SET(socket,*set)添加socket FD_CLD(socket,*set) 删除socket
FD_ISET(socket,*set) socket是否在set中 FD_ZERO(*set) 清空set WSAAsynSelect ,WSAEventSelect异步通知 完成IO 异步数据传送 LRESULT CALLBACK winproc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { swtich(uMsg) { case WM_SOCKET: SOCKET s = wParam; if(WSAGETSELECTERROR(lParam)) { closesocket(s); break; } int type=WSAGETSELECTEVENT(lParam); switch(type) { case FD_ACCEPT: SOCKET newConnection = accept(s,NULL,NULL); WSAAsynSelect(newConnection,hwnd,WM_SOCKET,FD_WRITE|FD_READ|FD_CLOSE); break; case FD_READ: //有新数据可读 break; case FD_WRITE: //缓冲区可写 break; case FD_CONNECT: break; case FD_CLOSE: closesocket(s); break; } break; } } |
WinSock IO 模型
最新推荐文章于 2022-11-27 13:03:57 发布