Python SocketServer: отправка нескольким клиентам?
Я пытаюсь создать небольшую программу на языке Python с SocketServer, который должен отправлять сообщения, которые он получает, всем подключенным клиентам. Я застрял, я не знаю, как хранить клиентов на стороне сервера, и я не знаю, как отправить нескольким клиентам. Да, моя программа дает сбой каждый раз, когда подключается более одного клиента, и каждый раз клиент отправляет более одного сообщения ...
Вот мой код до сих пор:
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()
Очевидно, я понятия не имею, что я делаю, поэтому любая помощь будет отличной.
Заранее спасибо!
Изменить: я использую Python 2.7 в Windows Vista.