Juego ejercicios [Python]

Iniciado por Masita, 21 Diciembre 2009, 03:04 AM

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

Novlucker

Es que no he hecho nada de ese tipo :silbar:

Entonces sería Usuario (Cliente) <---> Servidor <---> Usuario (Cliente), con el servidor recibiendo y enviando comunicación a ambos lados?

Saludos
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

braulio--


^Tifa^

#112
Pues nada escanear servidores web con puerto 80 mediante 1 rango de IP estaticas.

Código (python) [Seleccionar]


import httplib, socket

class Escaneo:
  def __init__(self, parametro):
    self.valor = parametro

  def Scan(self):
    try:
      for b in range(len(self.valor)):
connecion = httplib.HTTPConnection(self.valor[b], 80, timeout=2)
connecion.request("GET", "/index.html")
r = connecion.getresponse()
print(self.valor[b],r.getheader('Server'))
       
    except Exception:
print("No existe el servidor :: ", self.valor[b])
    finally:
connecion.close()

class Validacion:
  def Valida(self, parametro1):
    param1 = parametro1.split('/')

    for a in range(len(param1)):
      try:
socket.inet_aton(param1[a])
Objecto1 = Escaneo(param1)
Objecto1.Scan()

      except socket.error:
print("Rango de IP insertado es Incorrecto :: ", param1[a])

ip=raw_input("Inserta rango de IP ex:( 200.55.4.1/190.4 ) ::  ")
Objeto = Validacion()
Objeto.Valida(ip)


Citarbash-3.1$ python perla.py
Inserta rango de IP ex:( 200.55.4.1/190.4 ) ::  127.0.0.1/190.56.7.8/19c.56.7.1
('127.0.0.1', 'Apache/2.2.13 (Unix) DAV/2')
('No existe el servidor :: ', '190.56.7.8')
('127.0.0.1', 'Apache/2.2.13 (Unix) DAV/2')
('No existe el servidor :: ', '190.56.7.8')
('Rango de IP insertado es Incorrecto :: ', '19c.56.7.1')


No tengo cabeza para los numeros... si idealizan algo que no incluya numeros estare mas feliz

Novlucker

#113
Cita de: ^TiFa^ en 11 Enero 2010, 00:09 AMNo tengo cabeza para los numeros... si idealizan algo que no incluya numeros estare mas feliz

Que sugieres ^TiFa^? XD

braulio23, no me había puesto a pensar muy bien en el ejercicio que planteabas, y ahora que lo he hecho me doy cuenta de que no es de lo que se pueda decir, "sencillo", así que la mayoría de los que inicia la tiene algo complicada :-\

Por mi parte, al igual que en casi todos los lenguajes uno no conoce bien las cosas hasta bien no se presenta la oportunidad de hacerlas, así que como no me había planteado hacer eso en python, ahora estoy investigando un poco sobre los diferentes métodos (la parte del juego ya esta) para tratar la conexión desde el servidor, dado que son dos clientes que se conectan a un "intermediario" ,cual será la mejor opción? mantener una sola conexión intercambiando los clientes? multithreading? asyncore? Ya veré ....

En cuanto pueda revisarlo bien, me pongo en ello :P

Decidido, voy a implementar el método "feo" y rápido, while en cliente(s) y servidor. El servidor recibe conexión y responde con la tabla, espera ingreso del cliente, acepta ingreso, modifica la tabla y corta conexión con cliente, responde al otro cliente y vuelve a comenzar.
No me gusta para nada, pero creo que en este caso no da para complicarse más, esta claro que es solo para pasar el rato y nadie lo va a usar :-X

Saludos
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

CaronteGold


  Yo hace unos días había hecho algo parecido, por ejemplo cuando un cliente dijese corto, pues pasaba al otro, se cambiaban de turno, pero pensé que se podían conectar ambos a la vez.

  Saludos.

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

braulio--

Yo no veo que haya que usar hilos ni nada de eso :
Un cliente se conecta al server y espera el otro.
Cuando el server detecta que se ha conectado el otro dice que van a empezar.
El server espera la entrada del usuario que le toque y el otro cliente espera que el server le mande informacion.
Y así cambiando de usuario.

Novlucker

Mira la última parte de mi post anterior .. el de "[...]decidido...", es lo que he dicho, hay que conectar y desconectar de un cliente y otro intercambiando clientes (para no "complicarse" con más code), o hablas de tener conectados en simultaneo dos clientes en el mismo puerto del servidor :huh:
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

braulio--

Claro, fácilmente se pueden conectar al mismo puerto y manejarlos por separado.
Lo que devuelve el método .accept() del server es una tupla con el manejador socket del cliente al que puedes mandar datos y también recibirlos (si te los envía) y el puerto por el que se ha conectado (que esto tampoco es muy útil.

Novlucker

Jaaaaaaaaaa! Nada nada! pequeño desliz :-X

Nunca has hecho una pregunta que pueda decirse tonta (estupida)?
El valor que se le pasa al listen() pa' que es entonces? XD

En ocasiones hay que plantearse lo rápido que se es frente al teclado, al punto de que las neuronas no razonan tan rápido como se mueven los dedos. XDD

Lo dicho, olvidalo ;D
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