import socket
import threading

def tractaClient(conn, adreça):
    conn.setblocking(True) # per omissió ja és bloquejant
    print('Connectat via', str(adreça))
    while True:
        try:    #rep un màxim de 1024
            dades = conn.recv(1024).decode()
            conn.send(('eco servidor: '+dades).encode())
        except socket.error:
            print('connexió malmesa')
            break
    conn.close()
    
HOST = ''      
PORT = 50007
clientsSimultanis = 20
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(clientsSimultanis)  # socket en espera de connexions
conn, adreça = s.accept()
while True:
    threading.Thread(target=tractaClient, args=(conn, adreça)).start()
    conn, adreça = s.accept()
