I'm writing a proxy using .NET and C#. I haven't done much Socket programming, and I am not sure the best way to go about it. What would be the best way to implement this? Should I use Synchronous Sockets, Asynchronous sockets? Please help!
It must...
- Accept Connections from the client on two different ports, and be able to receive data on both ports at the same time.
- Connect to the server on two different ports, and be able to send data on both ports as the same time. 
- Immediately connect to the server and start forwarding packets as soon as a client connection is made. 
- Forward packets in the same order they were received. 
- Be as low latency as possible. 
- I don't need the ability for multiple clients to connect to the proxy, but it would be a nice feature if its easy to implement. 
Client --------- Proxy ------- Server
---|-----------------|----------------|
Port <--------> Port <-------> Port
Port <--------> Port <-------> Port
 
     
    