I\'ve following code:
_clientRequestStream = _tcpClient.GetStream();
var memoryStream = new MemoryStream();
_clientRequestStream.CopyTo(memoryStream);
TCP is a stream protocol. Bytes can flow at an arbitrary rate. Theoretically you could get one byte, then several seconds later 10 bytes, then several minutes later two bytes.
TCP is useless as a protocol in and of itself.
There must be a higher-order protocol whose structure allows for the detection of both the beginning and the end of a "message". We cannot guess at what higher-order protocol you are listening to, you have to know that in order to listen.
A network stream remains open until it is closed by one end of the stream. CopyTo() copies all data from the stream, waiting until the stream ends. If the server is not sending data, the stream does not end or close and CopyTo() dutifully waits for more data or for the stream to end. The server on the other end of the stream must close the stream for it to end and CopyTo() to return.
Google "TcpClient Tutorial" or "TcpCLient Sample" to get some good pages showing other ways you might use them, such as checking NetworkStream.DataAvailable to see if there is data waiting or if the stream is still open with no data. To just read some data and not wait for the stream to close you would use NetworkStream.Read() or wrap it in a StreamReader and use ReadLine(). It all depends on the server you are connecting to and what you are trying to accomplish.
This will block indefinitely I believe until the underlying connection is closed, in which case I assume it would throw an IOException. Be careful with thinking of NetworkStream like a normal Stream. TCPClient.GetStream() is a nice abstraction which saves you the hassle of using Socket directly, but it's easy to fall into traps like these using synchronous operations with NetworkStream. It's worth checking out the specific MSDN documentation on NetworkStream.
Here's a nice example of using async sockets as opposed to TCP client: http://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod