title: Sockets packet forwarding
body: <p>I'm looking to create some kind of a gateway that sits between a server and a client.
  The so called gateway is supposed to filter some packets sent by the client and forward 99% of them.</p>
  
  <p>Here are my questions:</p>
  
  <ol>
  <li><p>Client opens a new socket to the gateway, i open a socket to the server from the gateway and store it in a list for further use. However, in one situation, all the connections will come from the same IP, thus leaving me with limited options on choosing the socket that should forward the packet to the server. How can i differentiate between opened sockets?</p></li>
  <li><p>From previous situations, i'm expecting about 500 clients sending a packet every second. Performance wise, should i use a multithread model, or stick with a single thread application?</p></li>
  <li><p>Still a performance question :I have to choose between C# and Python. Which one should give better performance?</p></li>
  </ol>