title: TcpListener problem - re-binding to same port with different local addresses
body: <p>I'm trying to do the following: listen on some port for loopback connections only, and then start listening on any IP address.
  Here is the code:</p>
  
  <pre><code>TcpListener l1 = new TcpListener(new IPEndPoint(IPAddress.Loopback, 12345));
  l1.Start();
  Socket s = l1.AcceptSocket();
  Console.ReadKey();
  //s.Close();
  l1.Stop();
  TcpListener l2 = new TcpListener(new IPEndPoint(IPAddress.Any, 12345));
  l2.Start();
  l2.AcceptSocket();
  Console.ReadKey();
  </code></pre>
  
  <p>The problem is that if a client connects while listening on the Loopback address (l1), then no other client can connect to the Loopback address when the second listener (l2) starts listening. why is that?</p>
  
  <p>Another thing I noticed is that if I close all clients that connected to l1 (the remarked line), then l2 does accept loopback connections.</p>
  
  <p>Any ideas?</p>