错误发生在服务端异步收到一个socket连接,之后使用WSAGetLastError()得到的IO错误码是122
这个错误码在系统中的解释是The data area passed to a system call is too small. 就是说前面的某个buffer设置的太小,看一下上一个调用的winapi是acceptEx这个函数;下面是代码(这是错误的)
tRtn = lpfnAcceptEx( mListenSocket, tpOverlapEx->mCommSocket, tAcceptRecvBuf, 0, // 表示只接收连接,不接收数据 sizeof(sockaddr_in), sizeof(sockaddr_in), &dwBytes, (LPOVERLAPPED)tpOverlapEx);
检查一下tAcceptRecvBuf和overlapEx中的buf,都设置了一K的大小,应该不是这两个buf出现问题的,再看一下acceptEx这个函数在msdn中的原型: