title: why can't bind to 0.0.0.0:80 and 192.168.1.1:80 simultaneously?
body: <p>My python test code:</p>
  
  <pre><code>import socket
  
  s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s1.bind(('192.168.1.1', 80)) 
  s1.listen(5)
  
  s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s2.bind(('0.0.0.0', 80)) 
  s2.listen(5)
  </code></pre>
  
  <p>I got this error:</p>
  
  <pre><code>fpemud-workstation test # ./test.py
  Traceback (most recent call last):
    File "./test.py", line 11, in &lt;module&gt;
      s2.bind(('0.0.0.0', 80)) 
    File "/usr/lib64/python2.7/socket.py", line 224, in meth
      return getattr(self._sock,name)(*args)
  socket.error: [Errno 98] Address already in use
  </code></pre>
  
  <p>192.168.1.1 is the ip address of my eth0 interface.<br>
  I think 0.0.0.0:80 and 192.168.1.1:80 should be able to co-exist.<br>
  Packets with dst-addr 192.168.1.1 goes to socket s1, packets with other dst-addr goes to socket s2.</p>