Conexión vía socket con python

En el Congreso Nacional de Software Libre de 2009, tuve el agrado de participar en un taller de python, dictado por Juan Hernández donde explicó ciertas sentencias y algo de la lógica de python, anteriormente lo había leído poco pero no había incursionado de lleno en el lenguaje.

Después de eso, unos amigos necesitaban hacer un trabajo de conexión entre dos máquinas vía socket, en vista de la oportunidad de ayudar, decidí hacer el proyecto con python, conseguí buena información y de varios lugares oficiales de python algunos ejemplos.

El programa consiste en aumentar el valor de una variable o decrementar dicho valor, para eso usamos dos condiciones y el valor de la variable que se desea aumentar. Trataré de explicar un poco el programa a ver si puedo expresarlo.

Se crea un archivo para el servidor, donde se realiza todo el proceso, al archivo lo llamé “servidor.py“, su contenido está lo siguiente:

#!/usr/bin/python

import socket

con = socket.socket()
con.bind(("localhost", 9999))
con.listen(1)
val = 0

sc, addr = con.accept()

while True:
    recibido = sc.recv(1024)
    if recibido == "1":
        recval = sc.recv(1024)
        val = int(recval) + val
        print "Aumento a:", val
    else:
        if recibido == "2":
            recval = sc.recv(1024)
            val = val - int(recval)
            print "Disminuyo a:", val
        else:
            if recibido == "q" or recval == "q":
                break
            else:
                print "Debe ingresar 1 para incrementar"
                print "Debe ingresar 2 para decrementar"
                print "Debe ingresar q para salir"
                break

print "Cerrando conexion"

sc.close()
con.close()

Posteriormente creado los archivos, debemos darle permisos de ejecución, se debe tomar en cuenta que primero se ejecuta el archivo servidor.py, puesto que es el que abre el puerto de escucha esperando una solicitud de algún cliente, luego ejecuto el cliente.py quien enviará los datos suministrados al servidor.

#!/usr/bin/python

import socket

con = socket.socket()
con.connect(("localhost", 9999))

while True:
    mensaje = raw_input("Ingresa condicion: ")
    con.send(mensaje)
    valor = raw_input("Ingresa valor: ")
    con.send(valor)
    if mensaje == "q" and valor == "q":
        break

print "Cerrando conexion"

con.close()

En los archivos donde aparece:

con.bind(("localhost", 9999)

El anterior archivo servidor.py y en el archivo cliente.py:

con.connect(("localhost", 9999)

Donde se declara localhost podemos declarar la dirección IP de nuestro servidor, en ambos archivos, la práctica la realizamos en una misma máquina y en dos máquinas, una como servidor, en ambos casos siempre se coloca la dirección IP del servidor, tanto en el archivo servidor.py como en el cliente.py.

El programa es muy sencillo y fácil de interpretar.

Advertisements
This entry was posted in Python. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s