title: difference between "address in use" with bind() in Windows and on Linux - errno=98
body: <p>I have a small TCP server that listens on a port.  While debugging it's common for me to CTRL-C the server in order to kill the process.</p>
  
  <p>On Windows I'm able to restart the service quickly and the socket can be rebound.  On Linux I have to wait a few minutes before bind() returns with success</p>
  
  <p>When bind() is failing it returns errno=98, address in use.</p>
  
  <p>I'd like to better understand the differences in implementations.  Windows sure is more friendly to the developer, but I kind of doubt Linux is doing the 'wrong thing'.  </p>
  
  <p>My best guess is Linux is waiting until all possible clients have detected the old socket is broken before allowing new sockets to be created.  The only way it could do this is to wait for them to timeout</p>
  
  <p>is there a way to change this behavior during development in Linux?  I'm hoping to duplicate the way Windows does this</p>