Hola!
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.
#!/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:
#!/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!