Tu comunidad de Seguridad Informatica

Utilizando Socket en Python Info1810 Para ver Todo el contenido del foro es necesario estar Registrado! Utilizando Socket en Python Info1810
Utilizando Socket en Python Info1810 Antes de comentar o Aportar es Obligado Leer Las: Reglas | Rules Utilizando Socket en Python Info1810
Utilizando Socket en Python Info1810Ya Esta Disponible al publico "LeProject" el Videojuego del Foro Click Aquí Para Ver el Post. Utilizando Socket en Python Info1810
Utilizando Socket en Python Info1810Pitbull Security Labs "Extras" Esta Disponible! [ENTRA]Utilizando Socket en Python Info1810

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1Expermicid 

Expermicid
Usuario
Usuario

Lun Mar 18, 2013 12:30 pm
Al igual que en muchos lenguajes, Python nos proporciona un conjunto de clases y bibliotecas para realizar la conexión a equipos de forma remota a través de los denominados Socket.

Ellos nos permite enviar y recibir información entre aplicaciones utilizando el modelo de comunicación Cliente – Servidor.

Y eso es lo que vamos a intentar hacer en esta oportunidad. Desarrollar un cliente y un servidor para que se comuniquen entre ellos.

Comencemos:

Cliente

Creamos un archivo llamado Cliente.py y dentro de el ponemos:

Código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

En estas primeras lineas estamos dando el interprete y la codificacion.

Importamos la libreria Socket

Código:
import socket

Creamos un objeto socket para el cliente

Código:
s = socket.socket()

Utilizamos el metodo connect para conectarnos al servidor

Código:
s.connect(("localhost", 9999))

El argumento de connect es una tupla con host y puerto.
Ya estamos conectados ahora hacemos un bucle que pide por consola el mensaje a enviar. Luego de introducido el mensaje se envia utilizando el metodo send.

Código:
while True: 
      mensaje = raw_input("> ") 
      s.send(mensaje) 
      if mensaje == "Quit": 
        break

Y ponemos un comando de salida que es la palabra clave Quit, que si se llega a introducir se sale del bucle y cerramos la coneccion.

Código:
s.close()

Servidor

Creamos un nuevo archivo llamado Servidor.py y dentro de el ponemos:

Código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

Estas dos lineas las explicamos en el cliente.

Importamos la libreria Socket

Código:
import socket

Creamos un objeto socket para el servidor

Código:
s = socket.socket()

Tenemos ahora que indicar en qué puerto se va a mantener a la escucha nuestro servidor utilizando el método bind. Para sockets IP, como es nuestro caso, el argumento de bind es una tupla que contiene el host y el puerto.

Código:
s.bind(("localhost", 9999))

Utilizamos listen para hacer que el socket acepte conexiones y accept para comenzar a escuchar. listen requiere de un parámetro que indica el número de conexiones máximas que queremos aceptar; evidentemente, este valor debe ser al menos 1.

Código:
s.listen(1) 
sc, addr = s.accept()

accept se mantiene a la espera de conexiones entrantes, bloqueando la ejecución hasta que llega un mensaje.
Cuando llega un mensaje, accept desbloquea la ejecución, devolviendo un objeto socket que representa la conexión del cliente y una tupla que contiene el host y puerto de dicha conexión.

Una vez que tenemos este objeto socket podemos comunicarnos con el cliente a través suyo, mediante los métodos recv y send que permiten recibir o enviar mensajes respectivamente. El método send toma como parámetros los datos a enviar, mientras que el método recv toma como parámetro el número máximo de bytes a aceptar.

Nuevamente haciendo uso de Un bucle podemos hacer que siga recibiendo los mensajes hasta que llegue la palabra clave de cierre, que es Quit.

Código:
while True: 
      recibido = sc.recv(1024) 
      if recibido == "quit": 
        break       
      print "Recibido:", recibido 
      sc.send(recibido)

Llegado este punto solo nos queda cerrar la coneccion.

Código:
sc.close() 
s.close()


Codigos completo:

Cliente

Código:
import socket 
 
s = socket.socket() 
s.connect(("localhost", 9999)) 
 
while True: 
      mensaje = raw_input("> ") 
      s.send(mensaje) 
      if mensaje == "quit": 
        break 
 
s.close()

Servidor

Código:
import socket 
 
s = socket.socket() 
s.bind(("localhost", 9999)) 
s.listen(1) 
 
sc, addr = s.accept() 
 
while True: 
      recibido = sc.recv(1024) 
      if recibido == "quit": 
        break       
      print "Recibido:", recibido 
      sc.send(recibido) 
 
sc.close() 
s.close()

Y probemoslo.

Utilizando Socket en Python GTB5g

Creditos: Mundo geek

Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.