InicioInfoCliente - Servidor multicliente
He estado viendo que hay mucha confusion a la hora de crear socket con varios clientes y hace un tiempo hice un cliente-servidor multicliente y quiero compartirlo con esta comunidad.

Servidor:

import SocketServer

host, port = ("127.0.0.1",6565)

class threadingTcpHandler(SocketServer.BaseRequestHandler):
def handle(self):
while True:
data = self.request.recv(1024)
if not data:
print "client close conexion"
break
else:
print str(self.client_address)+": "+str(data)
self.request.send(data)

if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer((host,port),threadingTcpHandler)
server.allow_reuse_address = True
server.serve_forever()


Cliente:

import asyncore,socket,time,threading

class async(threading.Thread):
def __init__(self,root):
threading.Thread.__init__(self)
self.root = root

def run(self):
while True:
if self.waiting() == False:
text = raw_input(">>>" )
else:
continue
self.change(text)

def waiting(self):
return self.root.wait

def change(self,data):
self.root.setBuffer(data)

class client(asyncore.dispatcher):
def __init__(self,host,port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET,socket.SOCK_STREAM)
self.connect((host,port))
self.buffer = ""
self.wait = False

def setBuffer(self,data):
try:
self.wait = True
self.buffer = data
except:
print "error"

def handle_connect(self):
pass

def handle_close(self):
print "close conexion"
self.close()

def handle_read(self):
print "recivido: "+self.recv(8192)
self.wait = False

def writable(self):
w = len(self.buffer)
return (w > 0)

def handle_write(self):
sent = self.send(self.buffer)
self.buffer = self.buffer[sent: ]


Ejemplo Cliente:


c = client("localhost",6565)
obj = async(c)
obj.daemon = True
obj.start()
asyncore.loop(0.3)


De esta manera podran conectar todos los clientes que se quiera y estos se crean en hilos separados al principal gracias a la clase de ServerSocket ThreadingTCPServer.

Recordad que podeis agregarme a skype: hackloper para compartir conocimientos o para ayudaros incluso hacer conferencias entre varias personas.
Datos archivados del Taringa! original
44puntos
332visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

f
franciskiko🇦🇷
Usuario
Puntos0
Posts21
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.