A lot of the good posts on .Net sockets seen on SO are around writing scalable high performance servers.
High performance TCP server in C#
How to write a scalable Tcp/Ip based server
While those posts are very good, what are the core things to focus on when writing high performance TCP Client Applications?
A scenario for a high performance client would be an application that streams requests to a server and processes responses in a non-blocking fashion.
Such a client should also have a strategy for reliable disconnect detection.
To further clarify, we have no control over the server end.
We simply have a server endpoint to connect to.
zmqNet mentioned in the comments is a great lib, but I think its strongest (or meant for cases) where both ends of the connection are using zmq (true?).