Как сделать простой многопоточный сервер сокетов в Python, который запоминает клиентов

Как мне сделать простой эхо-сервер Python, который запоминает клиентов и не создает новый сокет для каждого запроса? Должен быть в состоянии поддерживать одновременный доступ. Я хочу иметь возможность подключаться один раз и постоянно отправлять и получать данные, используя этот клиент или аналогичный:

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = raw_input("Server hostname or ip? ")
port = input("Server port? ")
sock.connect((host,port))
while True:
    data = raw_input("message: ")
    sock.send(data)
    print "response: ", sock.recv(1024)

То есть с сервером, работающим на порту 50000, с помощью вышеуказанного клиента, я хочу иметь возможность сделать это:

me@mine:~$ client.py
Server hostname or ip? localhost
Server Port? 50000
message: testa
response: testa
message: testb
response: testb
message: testc
response: testc

Ответы на вопрос(1)

Ваш ответ на вопрос