title: Concept of non-blocking socket functions using WSAWaitforMultipleEvents()
body: <p>I am using WSAWaitforMultipleEvents() functions and I think that made my sockets non-blocking i.e. recvfrom() is only called only when FD_READ Event is generated and data is available at socket to be read. So, my recvfrom() doesnot block in call.</p>
  
  <p>Is my approach of making the socket non-blocking correct? Because now I am feeling that still my program is blocking waiting for Event so it doesn't really look non-blocking. I am adding a piece of my code for help.</p>
  
  <p>Thanks in advance :)</p>
  
  <pre><code>   while(1)
     {
       waitRet = WSAWaitForMultipleEvents(1, &amp;hEvent, FALSE, INFINITE, FALSE);
       if(WSAEnumNetworkEvents(newSocketIdentifier,hEvent,&amp;events) == SOCKET_ERROR)
       {
        "FAILURE"
        continue;
       }
       else
       {   //else event occurred
          if(events.lNetworkEvents &amp; FD_READ)
          {
             //FD_READ
            if((recv_len = recvfrom(newSocketIdentifier, receiveBuffer, sizeof(receiveBuffer), 0, (struct sockaddr *) &amp;clientSocket, &amp;clientSocketLength)) == SOCKET_ERROR)
            {
               //error in recvfrom
            }
            else
            {
              //recvfrom() succeeded
            }
          }
       }
    }
  </code></pre>