Problem:
When I do something like this:
for (int i = 0; i < 100; i++) { SendMessage( sometSocket, i.ToString()); Thread.Sleep(250); // works
There is no need to abandon Tcp because it is stream oriented.
You can fix the problems that you are having by implementing message framing.
See
http://blogs.msdn.com/malarch/archive/2006/06/26/647993.aspx
also:
http://nitoprograms.blogspot.com/2009/04/message-framing.html