Estoy haciendo un sistema de salas de chat en Python y no avanzo
Tengo un script que (en teoría) recibe los mensajes enviados por un usuario y los reenvía a todos los usuarios de la sala.
También tengo un script cliente.
Código
#!/usr/bin/env python # -*- coding: cp1252 -*- import socket, sys print "### --- * --- Servidor del PyXat activat --- * --- ###" print "\n\n\n" print "Creant objecte connector - socket..." try: serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except IOError: print "Error: No s'ha pogut crear l'objecte principal socket!" sys.exit(1) print "Objecte connector - socket principal creat ... OK" print "Fixant objecte connector - socket..." try: serv.bind(("localhost", 600)) except socket.error: print "Error: No s'ha pogut fixar l'objecte principal socket!" sys.exit(1) print "Objecte connector - socket principal fixat ... OK" try: llist = int(input('Quantes connexions accepto? ')) except ValueError: print 'Indica un número!' sys.exit(1) print 'Ok, creant ' , llist , ' espais de connexió...' serv.listen(llist) print llist , 'espais de connexió creats al xat ... OK' print "Creant sistema de connexió..." def conn(): enviar = socket.socket() sv, addr = serv.accept() con = socket.socket() print addr , "s'ha connectat!" host = addr[0] port = addr[1] while True: msg = sv.recv(1024) enviar.connect((host, port)) enviar.send(msg) print msg print "Iniciant sistema de connexió..." conn()
Y el script cliente:
Código
#!/usr/bin/env python # -*- coding: cp1252 -*- import socket print "Benvingut al PyXat!" nick = raw_input("Escriu el teu nick: ") sala = raw_input("Escriu la direcció d'una sala: ") c = socket.socket() c.connect((sala, 600)) while 1: dic = raw_input("> ") c.send(nick) c.send(dic)
Y no me funciona (normal en mí ).
He probado también a usar dos sockets a la vez: uno para enviar y otro para recibir. En el script servidor, la lista addr consta de la dirección IP y de un puerto; he probado a usar addr[0] como dirección de conexión y addr[1] como puerto, pero no funciona. También he intentado añadir la lista addr a otra lista e iterar sobre cada elemento de ella con un for, pero no tengo muy claro cómo hacerlo.
Agradecería una mano en esto.
Saludos!