用GetQueuedCompletionStatus函数能不能得到某一个Socket发送完成的消息噢? 
如果可以,怎么得到呢?如果不能,那我怎么让发送完成的Socket继续进入接受状态呢?

解决方案 »

  1.   

    肯定能得到。把代码帖上来看。
    完成后要让socket继续进入接受状态你可以再投递一个WSARecv啊
      

  2.   

    for( Iter=socket_list.begin(); Iter<socket_list.end(); Iter++ )
    {
    pPHD = (LPPER_HANDLE_DATA)*Iter;
    printf("%d socket popup\n", pPHD->sock ); if( WSASend( pPHD->sock, &(PerIoData->DataBuf), 1, &SendBytes, 0, 
     &(PerIoData->Overlapped), NULL )==SOCKET_ERROR )
    {
    if (WSAGetLastError() != ERROR_IO_PENDING)
    {
       printf("WSASend() failed with error %d\n", WSAGetLastError());
       return 0;
    }
    }
    }
    我的发送代码是这样的。但是不知道什么时候用这个代码。说真的我不是很清晰整个流程。
    如果发送完成,怎么样判断呢?
    或者说我心接受到一个消息,怎么样才能判断是刚接受的还是所有人都有呢?不然会产生重复发送的阿