elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Python + Sockets
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Python + Sockets  (Leído 5,785 veces)
anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Python + Sockets
« en: 3 Diciembre 2009, 02:27 am »

Estoy haciendo un chat en Python y el servidor me esta dando muchos problemas... La idea es que dos clientes se conectan al servidor, y este reenvia todo lo que recibe a los dos clientes.

El problema viene porque mi server esta asi:

Código
  1. #!/usr/bin/env python
  2. import socket
  3. s = socket.socket()
  4. s.bind(('192.168.1.35',9999))
  5. s.listen(1)
  6. sc, addr = s.accept()
  7. c = socket.socket()
  8. a = socket.socket()
  9. c.connect(('192.168.1.34', 9998))
  10. a.connect(('192.168.1.35',9997))
  11. while True:
  12.    resp = sc.recv(1024)
  13.    print resp
  14.    c.send(resp)
  15.    a.send(resp)
  16.  

Si uno de los clientes intenta conectarse, el servidor tira error porque no puede conectarse con el otro. (Obvio que hago algo mal ya que asi solo funcionara cuando los dos clientes conecten a la vez con el server...)

Que tengo mal en el diseño?


En línea

pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Python + Sockets
« Respuesta #1 en: 3 Diciembre 2009, 03:10 am »

No entiendo bien esta parte...
Código
  1. sc, addr = s.accept()
  2. c = socket.socket()
  3. a = socket.socket()
  4. c.connect(('192.168.1.34', 9998))
  5. a.connect(('192.168.1.35',9997))
  6. while True:
  7.    resp = sc.recv(1024)
  8.    print resp
  9.    c.send(resp)
  10.    a.send(resp)
  11.  
A quien se conectan c y a?


En línea

anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Re: Python + Sockets
« Respuesta #2 en: 3 Diciembre 2009, 03:12 am »

a los clientes, si no como reenvio los mensajes?

Soy un pelin novato en Python, apenas llevo dos semanas programando en serio  :-\
En línea

pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Python + Sockets
« Respuesta #3 en: 3 Diciembre 2009, 03:40 am »

Acabo de hacer esto como para un ejemplo...
Es un server sincronico q acepta de a 1 conexion

Código
  1. import socket
  2.  
  3. s = socket.socket()#iniciamos el socket q va a escuchar
  4. s.bind(('127.0.0.1',9999))
  5. s.listen(2)#empezamos a escuchar
  6.  
  7. totalData = "Welcom to the super server!\n"
  8.  
  9. while True:
  10.    sc, addr = s.accept() #accept() devuelve una tupla sc (q es el socket del cliente) addr q es una tupla ("IP", puerto)
  11.    ip,p = addr
  12.    print "From : " + ip
  13.  
  14.    data = "" + sc.recv(1024) + "\n"  #leemos lo q nos manda el cliente
  15.    totalData += data
  16.    sc.send(totalData) #y le respondemos
  17.  
  18.    sc.close()#cerramos la conexion... y el ciclo vuelve a empezar...

Este server sirve para atender de a 1 conexion a la vez... Para tratar con varias podes ir usando Select, Threads.. etc..

Cliente:
Código
  1. import socket
  2.  
  3. TotalData = ""
  4.  
  5. while True:
  6.    s = socket.socket() #inicializamos el socket
  7.    data = raw_input("<<")
  8.    s.connect(("127.0.0.1",9999)) #lo conectamos al mismo puerto donde el server escucha
  9.    s.send(data) #mandamos cosas
  10.    TotalData = "" + s.recv(1024*4) #recivimos cosas
  11.    print TotalData #mostramos la cosa
  12.    s.close() #cerramos la cosa de la cosa (?) cerramos el socket
  13.    del s

Repito... no busca ni prolijidad ni nada esto... es para q veas masomenos un ejemplo... si buscas bien debe haber en este foro... y en internet varios ejemplos de todo tipo...
En línea

anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Re: Python + Sockets
« Respuesta #4 en: 3 Diciembre 2009, 03:45 am »

Hasta ahi he llegado, el problema es precisamente las multiconexiones. En princpio me conformo con entender como hacerlo con dos clientes...

Lo unico que busco es un esquema para entender como codificar el servidor "/

Usando threads y select como?
En línea

pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Python + Sockets
« Respuesta #5 en: 3 Diciembre 2009, 04:01 am »

Código
  1. import socket, select
  2.  
  3. s = socket.socket()#iniciamos el socket q va a escuchar
  4. s.bind(('127.0.0.1',9999))
  5. s.listen(5)#empezamos a escuchar
  6. input = [s] #en s vamos a poner la lista de sockets a atender
  7. totalData = "Welcom to the super server!\n"
  8.  
  9. while True:
  10.    rs ,ws ,es = select.select(input,[],[]) #rs read stream, write stream, error stream (creo no me acuerdo bien)
  11.    for r in rs:
  12.        if r is s: #si el socket es el q hace el listen, espero una conexion nueva
  13.            c, addr = s.accept()
  14.            ip , port = addr
  15.            print "From : " + ip
  16.            input.append(c)
  17.        else: #sino lo atiendo
  18.            try:
  19.                data = r.recv(1024)
  20.                disconnected = not data
  21.                if not disconnected:
  22.                    totalData += "" + data + "\n"
  23.                except disconnected:
  24.                disconnected = True
  25.                print r.gerpeername(), " disconnected"
  26.                input.remove(r) #si se desconecto lo saco de la cola...

Algo asi?
No lo probe...

Sino tenes clases para servers dadas por la libreria standard de python...

De ultima busca el libro fundations of python network programing
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PYTHON]Bajar Codigo Fuente de una Web(Con SOCKETS)
Scripting
mr.blood 0 4,869 Último mensaje 11 Enero 2011, 19:17 pm
por mr.blood
[Python] Error con Sockets
Scripting
calk9 0 4,385 Último mensaje 2 Octubre 2011, 18:46 pm
por calk9
[Sin resolver]-[Python]Problema con sockets
Scripting
Arnau27 4 5,608 Último mensaje 22 Julio 2012, 20:37 pm
por Arnau27
Sockets en Python
Scripting
Br1ant 8 4,157 Último mensaje 2 Abril 2015, 19:44 pm
por Br1ant
PYTHON SOCKETS
Scripting
dhulas 2 2,256 Último mensaje 26 Abril 2017, 20:28 pm
por TheIllusionist
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines