I/O重叠操作失败

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:30:38
我现在在做一个IO完成端口。
具体代码:
socket = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); //创建重叠套接字

//接收
nResultRecv = WSARecv(sockAccept,olPlus.wbuf,3,&dwNumberOfRecv,&dwFlag
,&olPlus.ol,NULL);
接收结果是成功的,但是返回值是0,我看了MSDN说返回值应该是SOCK_ERROR (-1)
高手指点。。
但是我用的是重叠操作啊,WSARecv返回的不应该是0,如果是用同步的就应该返回0

按照楼主的写法的确应该返回 -1!

只是有点不清楚,WSARecv函数用的sockAccept 和 socket = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); //创建重叠套接字的 套接字名词怎么不一样!

你说的很不详细,我感觉应该是这样的,完成端口操作是同步返回的,,没有数据来的时候返回是0,你需要先调用GetQueuedCompletionStatus
来判断是否有数据,如果没有继续循环等待数据.如果有数据到来,在调用wsarecv来收