1 /* ********************* 2 * CreateIoCompletionPort() 函数有两个功能: 3 * 1、创建一个完成端口; 4 * 2、将一个设备与一个存在的完成端口进行绑定,在网络编程中这个设备就是一个SOCKET。 5 * ********************* */ 6 7 // 1、创建一个完成端口的固定写法: 8 HANDLE hCompletion = ::CreateIoCompletionPort( 9 INVALID_HANDLE_VALUE, NULL, NULL, 0); 10 11 // 2、将一个有效的设备(这里只以SOCKET 为例)句柄与有效的完成端口绑定 12 // 这时有一个参数非常重要,就是第三个参数,这个参数就类似创建线程时的线程参数。 13 // 可以说完全是一样的,不过这个参数会被函数 14 // ::GetQueuedCompletionStatus() 通过参数原样带回。 15 // 不过这里说的是写网络时,至于其他设备,暂时不了解。 16 // 为了完全,我们应该在堆内存中申请空间并传送过去。 17 char *chCompletionKey = new char[1024]; 18 SOCKET sockConn = WSAAccept(sockListen, NULL, NULL, NULL, 0); 19 ::CreateIoCompletionPort((HANDLE)sockConn, hCompletion, 20 (ULONG_PRT)chCompletionKey, 0);