基本思想:容許應用程序使用重疊數據結構一次投遞一個或者多個異步IO請求。數據結構
提交IO請求完成後,與之關聯的重疊數據結構中的事件對象受信,應用程序即可使用WSAVerlappedResult函數獲取重疊操做結果。app
1建立數據:異步
SOCKET sListen = ::WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP, NULL,0,WSA_FLAG_OVERLAPPED);
2傳輸數據:WSASend WSARecv(tcp) WSASendTo WSARecvFromtcp
應用程序兩種方法接收到重疊IO請求操做完成的通知:函數
1) 與WSAOVERLAPPED結構關聯的事件對象上等待,IO操做完成後,事件受信ui
2) 使用lpCompetionRoutine只想完成例程spa
3 接受鏈接: AcceptEx,接受新的鏈接,返回本地和遠程地址,取得客戶程序發送的第一塊數據code
若是投遞的請求成功完成:則發生下面3個動做:對象
1) 接受了新的鏈接blog
2) 新鏈接的本地地址和遠程地址都會返回
3) 接收到了遠程主機發來的第一塊數據
爲了直接調用AcceptEx而不是用Mswsock.lib庫,須要使用WSAIcotl函數將AcceptEx函數加載到內存,記載AcceptEx函數:
GUID GuidAcceptEx = WSAID_ACCEPTEX; DWORD dwBytes; WSAIotcl( pListen->s, SIO_GET_EXTENSION_FUNCTION_POINTER, &GuidAcceptEx, sizeof(GuidAcceptEx), &pListen->lpfnAcceptEx, sizeof(pListen->lpfnAcceptEx), &dwBytes, NULL, NULL );