[Python] Salas de chat

Iniciado por WaAYa HaCK, 2 Agosto 2011, 03:54 AM

0 Miembros y 1 Visitante están viendo este tema.

WaAYa HaCK

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.

Código (python) [Seleccionar]
#!/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 (python) [Seleccionar]
#!/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í  :P).

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!
La cacatúa yoyó es nueva en el zoo!

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

WaAYa HaCK

Perdón por tardar tanto, es que estoy de vacaciones.
Voy a mirar lo del Twisted, a ver si me aclaro.

Por curiosidad: qué he hecho mal en mi script? Hay forma de arreglarlo?

Gracias!
La cacatúa yoyó es nueva en el zoo!