title: use select() to listen on both tcp and udp message
body: <p>I only get the TCP message when I try this code:</p>
  
  <pre><code>from socket import *
  from select import select
  
  def read_tcp(s):
      while True:
          client,addr = s.accept()
          data = client.recv(8000)
          client.close()
          print "Recv TCP:'%s'" % data
  
  def read_udp(s):
      while True:
          data,addr = s.recvfrom(8000)
          print "Recv UDP:'%s'" % data
  
  def run():
      host = ''
      port = 8888
      size = 8000
      backlog = 5
  
      # create tcp socket
      tcp = socket(AF_INET, SOCK_STREAM)
      tcp.bind(('',port))
      tcp.listen(backlog)
  
      # create udp socket
      udp = socket(AF_INET, SOCK_DGRAM)
      udp.bind(('',port))
  
      input = [tcp,udp]
  
      while True:
          inputready,outputready,exceptready = select(input,[],[])
  
          for s in inputready:
              if s == tcp:
                  read_tcp(s)
              elif s == udp:
                  read_udp(s)
              else:
                  print "unknown socket:", s
  
  if __name__ == '__main__':
      run()
  </code></pre>
  
  <p>And the client is like this:</p>
  
  <pre><code>from socket import *
  
  def send_tcp():
      s = socket(AF_INET,SOCK_STREAM)
      s.connect(('localhost',8888))
      data="TCP "*4
      s.send(data)
      s.close()
  
  def send_udp():
      s = socket(AF_INET,SOCK_DGRAM)
      data="UDP "*4
      s.sendto(data, ('localhost',8888))
      s.close()
  
  if __name__ == '__main__':
      send_tcp()
      send_udp()
  </code></pre>