Which technology you use? WCF or just socket programming what's the importance of data? all of these questions determine the best practice of implementing passing messages.
i am developing it in C#.NET, using the helper classes - TcpClient, TcpListener. (i mean no direct use of Socket).
Also i am using asynchronous method of communication.
The project i am developing is a client monitoring application. Hence, the data is much more important. They are the messages, rather commands that are sent by the server-side application to the client-side application.
For example, if i would like to start keylogging on some client PC, i would hit a button on my server application, sending a command to start keylogger module on that client.
Also, then the client would send the whole log through a stream to the server.
Thus, its a two-way communication.
I think this would suffice. If you wish any more information though, you may ask.