new_contents: #!/usr/bin/env python
  # -*- coding: UTF-8 -*-
  #
  # Copyright (c) 2016 ASMlover. All rights reserved.
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  #
  #  * Redistributions of source code must retain the above copyright
  #    notice, this list ofconditions and the following disclaimer.
  #
  #  * Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in
  #    the documentation and/or other materialsprovided with the
  #    distribution.
  #
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  # POSSIBILITY OF SUCH DAMAGE.
  import socket
  import select
  
  def main():
      server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
      server_socket.bind(('', 5555))
      server_socket.listen(5)
  
      poll = select.poll()
      poll.register(server_socket.fileno(), select.POLLIN)
  
      connections = {}
      while True:
          events = poll.poll(10000)
          for fileno, event in events:
              if fileno == server_socket.fileno():
                  (client_socket, client_address) = server_socket.accept()
                  print 'got connection from', client_address
                  poll.register(client_socket.fileno(), select.POLLIN)
                  connections[client_socket.fileno()] = client_socket
              elif event & select.POLLIN:
                  client_socket = connections[fileno]
                  data = client_socket.recv(4096)
                  if data:
                      client_socket.send(data)
                  else:
                      poll.unregister(fileno)
                      client_socket.close()
                      del connections[fileno]
  
  if __name__ == '__main__':
      main()
  
subject: add poll demo for linux platform