This is probably because the Read in your client is waiting for data that won't exist, and times out. Try changing the order so that they don't match (i.e. Read then Write in your Client, and Write then Read in your server.) Also, make sure you have the appropriate mode, i.e. Immediate, or CRLF or whatever is appropriate.
I recently created a TCP/IP Eavesdropper to stand between a Client and Server, and had no problems with performance once I got the right mode (I wasn't sure what the Client/Server were using, so it took a few tries to get it right.)