Foros del Web » Programando para Internet » Python »

Problema con multiconexion

Estas en el tema de Problema con multiconexion en el foro de Python en Foros del Web. Buenas, vereis estoy programando un pequeño chat, de momento es la version mas simple, pues el servidor necesita aceptar multiples conexiones, he cogido un programa ...
  #1 (permalink)  
Antiguo 17/02/2010, 08:27
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 3 meses
Puntos: 0
Problema con multiconexion

Buenas, vereis estoy programando un pequeño chat, de momento es la version mas simple, pues el servidor necesita aceptar multiples conexiones, he cogido un programa parecido que tengo y he cogido la estructura para crear la multiconexion, he cambiado un par de cosas que son las funciones del chat..
Pues no se pueden conectar mas de un cliente a la vez, si conecta uno, ese va bien pero si el segundo quiere entrar se queda esperando la confirmacion y hasta que el primero no se va no la recibe.

Este es el codigo de mi servidor

Código Python:
Ver original
  1. HOST = ''
  2. PORT = int(options.serverport)
  3. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. s.bind((HOST, PORT))
  5.  
  6. s.listen(1)
  7. conns=[s]
  8.  
  9. lista_users = {}
  10. chat_room = {}
  11.  
  12. while True:
  13.     actius,x,y = select.select(conns,[],[])
  14.     for actual in actius:
  15.         if actual == s:
  16.             conn, addr = s.accept()
  17.             print 'Conectado con ', addr
  18.             conns.append(conn)
  19.             ip = addr[0]
  20.             conn.sendall('Conectado con exito')    
  21.            
  22.         else:
  23.             usuario = actual.recv(1024)
  24.             if usuario not in lista_users:         
  25.                 actual.sendall('User OK')
  26.                 puerto = actual.recv(1024)
  27.                 lista_users[usuario] = (ip,puerto)
  28.                 print lista_users
  29.                 actual.sendall('Que deseas hacer?')
  30.                 while True:                        
  31.                     data = actual.recv(1024)
  32.                     if not data:
  33.                         actual.close()
  34.                         print 'Cliente ',usuario,' desconectado'
  35.                         conns.remove(actual)
  36.                         del lista_users[usuario]
  37.                         break                      
  38.                        
  39.                     if data == ':LIST':
  40.                         actual.sendall('lista rooms')


no es todo el codigo lo que queda es un control de ordenes como el del LIST el problema es arriba.
este es el cliente:

Código Python:
Ver original
  1. while True:
  2.     data = conexion.recv(1024)     
  3.     print data
  4.     if data == 'Conectado con exito':  
  5.         conexion.sendall(usuario)
  6.         data = conexion.recv(1024)
  7.         if data == 'User OK':          
  8.             print data
  9.             conexion.sendall(puerto)
  10.             data = conexion.recv(1024)
  11.             if data == 'Que deseas hacer?':
  12.                 while data:
  13.                     prompt = raw_input('>')
  14.                     conexion.sendall(prompt)
  15.                     data = conexion.recv(1024)
  16.                    
  17.                     if data == 'lista rooms':
  18.                         print 'Rooms disponibles ',data
  19.                    
  20.                    
  21.                     elif data == 'Vuelva cuando quiera':
  22.                         print data
  23.                         conexion.close()
  24.                         sys.exit(0)

he llegado a la conclusion de que puede ser pk el inicio de conversacion esta muy establecido en accion-reaccion, osea lo que envia el servidor esta establecido asi y asi lo recibe el cliente, lo del User OK por ejemplo, pero no deberia ser por eso el fallo.

espero que me puedan ayudar pk llevo ya tiempo dandole vueltas a esto

muchas gracias
  #2 (permalink)  
Antiguo 18/02/2010, 07:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con multiconexion

Encontré esto, parece ser el mismo problema:
http://stackoverflow.com/questions/7...-server-python


Saludos :)
  #3 (permalink)  
Antiguo 22/02/2010, 07:41
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con multiconexion

gracias, lo mirare a ver si puedo adaptar algo a mi programa
  #4 (permalink)  
Antiguo 22/02/2010, 22:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema con multiconexion

Tambien hay un modulo (framework) con el puedes trabajar, se llama SocketServer.

No se si venga por defecto o no, por que mi "python" esta super modificado :P

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:53.