(parte 1) Sockets con Python.

Byaruzat

(parte 1) Sockets con Python.

Comparte este contenido en tus redes sociales!

Hola, ya llevo un tiempo de inactividad dentro de la página, pero vuelvo con mas ganas y con mas aprendizajes. En este caso vamos a hablar de los “sockets con python” una rama muy interesante y de verdad, muy divertida de python, pero primero…

¿Qué son los sockets?

Los sockets de Internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados. Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.

Entonces se podría decir que un socket es un paquete en español, algo que tiene un destino, un inicio, el puerto por donde va a ir y el protocolo.

Empezando con la programación:

 

CLIENTE

 

  • Primeramente vamos a importar la libreria “socket”.
import socket

 

 

  • Despues vamos a definir un socket de flujo, para concordar nuestra conexión con envio de datos TCP ( “s” es la variable de la conexión,  AF_INET es la conexión a internet y SOCK_STREAM define el uso de protocolo TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

 

 

  • Luego utilizamos la variable “s” y le asignamos una IP y un PUERTO, esto hara que el cliente busque el servidor y haga la conexión exitosa.
s.connect(("192.168.0.101", 7777))

 

 

  • Seguidamente vamos a crear un “While” el cual va a capturar un mensaje a través de un raw_input y va a mandarlo hacía el servidor definido. (“s.send(mensaje)” va a mandar la variable mensaje al servidor definido anteriormente).
while True:
    mensaje = raw_input("Escribe un mensaje: ")
 
    s.send(mensaje)
 
    if mensaje == "cerrar":
        break

 

 

  • Finalmente luego del break se cerrara la conexión, dando por terminada la misma.
s.close()

 

SERVIDOR

 

  • Para hacer más rápido el proceso, el servidor voy a comentar todo sobre las lineas de codigo, es practicamente lo mismo, nada más que va a recibir la información en vez de enviarla.
import socket
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
s.bind(("", 7777)) #Va a escuchar conexiones del puerto 7777 y de cualquier IP.
 
s.listen(5) #Se pone en modo de escucha a las conexiones entrantes y las limita a 5.

sc, addr = s.accept() #Instanciamos un objeto sc (socket cliente) para recibir datos, al recibir datos este devolvera tambien un objeto que representa una tupla con los datos de conexion: IP y puerto
 
while True:
 
    recibido = sc.recv(1024)
 
    if recibido == "cerrar":
        break
 
    print str(addr[0]) + " dice: ", recibido
 
sc.close()
s.close()

 

Aclaración:

Tanto el SERVIDOR como el CLIENTE, deben ir separados y ambos guardador con extención “.py”.

 

Bien, esta es la parte 1 de sockets con python, en la parte 2 vamos a ver como aplicar esto mismo con threads para aceptar varias conexiones y hacer un chat dinamico, mucha suerte!

Comentarios de Facebook

Post Relacionados

About the author

aruzat author