title: Asynchronous multi-direction server-client communication over the same open socket?
body: <p>I have a client-server app where the client is on a Windows Mobile 6 device, written in C++ and the server is on full Windows and written in C#. </p>
  
  <p>Originally, I only needed it to send messages from the client to the server, with the server only ever sending back an acknowledgement that it received the message.  Now, I would like to update it so that the server can actually send a message to the client to request data.  As I currently have it set up so the client is only in receive mode after it sends data to the server, this doesn't allow for the server to send a request at any time.  I would have to wait for client data.  My first thought would be to create another thread on the client with a separate open socket, listening for server requests...just like the server already has in respect the client.  Is there a way, within the same thread and using the same socket, to all the server to send requests at any time?</p>
  
  <p>Can you use something to the effect of <code>WaitForMultipleObjects()</code> and pass it a receive buffer and an event that tells it there is data to be sent?</p>