View difference between Paste ID: QebZMKz3 and V89wF3b6
SHOW: | | - or go back to the newest paste.
1-
#!/usr/bin/python
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.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
12
    listener.bind(('127.0.0.1', port))
13
    listener.setblocking(False)
14
    listener.listen(5)
15
    listeners.append(listener)
16
    sockets.append(listener)
17
    print(listener.getsockname(), ' listening')
18
  while True:
19
    r, w, x = select.select(sockets, sockets, sockets)
20
    for sock in r:
21
      if sock in listeners:
22
        c, a = sock.accept()
23
        print(sock.getsockname(), ' <- ', a)
24
        sockets.append(c)
25
      else:
26
        buf = sock.recv(80)
27
        if not buf:
28
          print(sock.getpeername(), ' EOF')
29
          sockets.remove(sock)
30
        else:
31
          print(sock.getpeername(), ' <- ', buf)
32
    for sock in w:
33
      pass
34
    for sock in x:
35
      print(sock.getpeername(), ' error')
36
      sockets.remove(sock)
37
38
if __name__ == '__main__':
39
  serve(int(arg) for arg in sys.argv[1:])