views:

206

answers:

1

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

+1  A: 

I've tinkered with this source code before. It was done well, recommended.

Hans Passant
This is quite easy to follow, thanks! It's not compiling with 3.5 though, and it is quite old. Is there anything specific I should avoid doing (outdated, or better way) that is used in this?
Kin