listing14-7.py 703 B

123456789101112131415161718192021222324252627282930
  1. import socket, select
  2. s = socket.socket()
  3. host = socket.gethostname()
  4. port = 1234
  5. s.bind((host, port))
  6. fdmap = {s.fileno(): s}
  7. s.listen(5)
  8. p = select.poll()
  9. p.register(s)
  10. while True:
  11. events = p.poll()
  12. for fd, event in events:
  13. if fd in fdmap:
  14. c, addr = s.accept()
  15. print 'Got connection from', addr
  16. p.register(c)
  17. fdmap[c.fileno()] = c
  18. elif event & select.POLLIN:
  19. data = fdmap[fd].recv(1024)
  20. if not data: # No data -- connection closed
  21. print fdmap[fd].getpeername(), 'disconnected'
  22. p.unregister(fd)
  23. del fdmap[fd]
  24. else:
  25. print data