Advertisement
Guest User

Listen on multiple sockets with select

a guest
Oct 29th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.98 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import select
  4. import socket
  5. import sys
  6.  
  7. def serve(ports):
  8.   listeners, sockets = [], []
  9.   for port in ports:
  10.     listener = socket.socket()
  11.     listener.bind(('127.0.0.1', port))
  12.     listener.setblocking(False)
  13.     listener.listen(5)
  14.     listeners.append(listener)
  15.     sockets.append(listener)
  16.     print(listener.getsockname(), ' listening')
  17.   while True:
  18.     r, w, x = select.select(sockets, sockets, sockets)
  19.     for sock in r:
  20.       if sock in listeners:
  21.         c, a = sock.accept()
  22.         print(sock.getsockname(), ' <- ', a)
  23.         sockets.append(c)
  24.       else:
  25.         buf = sock.recv(80)
  26.         if not buf:
  27.           print(sock.getpeername(), ' EOF')
  28.           sockets.remove(sock)
  29.         else:
  30.           print(sock.getpeername(), ' <- ', buf)
  31.     for sock in w:
  32.       pass
  33.     for sock in x:
  34.       print(sock.getpeername(), ' error')
  35.       sockets.remove(sock)
  36.  
  37. if __name__ == '__main__':
  38.   serve(int(arg) for arg in sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement