Python SocketServer: ¿envío a múltiples clientes?
Bueno, estoy tratando de construir un pequeño programa de Python con un SocketServer que se supone que envía los mensajes que recibe a todos los clientes conectados. Estoy atascado, no sé cómo almacenar clientes en el servidor y no sé cómo enviarlos a varios clientes. Ah, y mi programa falla cada vez que se conecta más de 1 cliente, y cada vez que un cliente envía más de un mensaje ...
Aquí está mi código hasta ahora:
print str(self.client_address[0])+' connected.'
def handle(self):
new=1
for client in clients:
if client==self.request:
new=0
if new==1:
clients.append(self.request)
for client in clients:
data=self.request.recv(1024)
client.send(data)
class Host:
def __init__(self):
self.address = ('localhost', 0)
self.server = SocketServer.TCPServer(self.address, EchoRequestHandler)
ip, port = self.server.server_address
self.t = threading.Thread(target=self.server.serve_forever)
self.t.setDaemon(True)
self.t.start()
print ''
print 'Hosted with IP: '+ip+' and port: '+str(port)+'. Clients can now connect.'
print ''
def close(self):
self.server.socket.close()
class Client:
name=''
ip=''
port=0
def __init__(self,ip,port,name):
self.name=name
self.hostIp=ip
self.hostPort=port
self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect((self.hostIp, self.hostPort))
def reco(self):
self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect((self.hostIp, self.hostPort))
def nick(self,newName):
self.name=newName
def send(self,message):
message=self.name+' : '+message
len_sent=self.s.send(message)
response=self.s.recv(len_sent)
print response
self.reco()
def close(self):
self.s.close()
Obviamente no tengo idea de lo que estoy haciendo, por lo que cualquier ayuda sería genial.
¡Gracias por adelantado!
Editar: estoy usando Python 2.7 en Windows Vista.