Changeset 40:164d31ed389a in livinglogic.python.tipimaid

Show
Ignore:
Timestamp:
12/17/08 19:31:58 (11 years ago)
Author:
Nikolas Tautenhahn <nik@…>
Branch:
default
Message:

server is now ipv6 compliant

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • liaalh_server.py

    r39 r40  
    1 import select 
    2 import socket 
    3 import sys 
     1import socket, select, sys 
    42 
    5 host = "" 
    63port = 40000 
    74backlog = 5 
    85size = 8192 
    9 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    10 server.setblocking(0) 
    11 server.bind((host, port)) 
    12 server.listen(backlog) 
    13 input = [server] 
     6input = [] 
     7sockets = [] 
     8for res in socket.getaddrinfo(None, port, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): 
     9    af, socktype, proto, canonname, sa = res 
     10    try: 
     11        s = socket.socket(af, socktype, proto) 
     12    except socket.error, msg: 
     13        s = None 
     14        continue 
     15    try: 
     16        s.setblocking(0) 
     17        s.bind(sa) 
     18        s.listen(backlog) 
     19        sockets.append(s) 
     20    except socket.error, msg: 
     21        s.close() 
     22        s = None 
     23        continue 
     24 
    1425running = 1 
     26input = sockets[:] 
    1527inputs = {} 
     28 
    1629while running: 
    1730    inputready,outputready,exceptready = select.select(input,[],[],60) 
    1831    for s in inputready: 
    19         if s is server: 
    20             # handle the server socket 
    21             client, address = server.accept() 
     32        if s in sockets: 
     33            # handle the server sockets 
     34            client, address = s.accept() 
    2235            input.append(client) 
    2336            inputs[client] = "" 
     37            print repr(client) 
    2438        else: 
    2539            # handle all other sockets 
     
    3650                del inputs[s] 
    3751                input.remove(s) 
    38 server.close()