Pythonizándo.me
Buenas tardes a todos.
Tal como el título lo indica, estoy incursionando y en proceso de aprendizaje del lenguaje Python. He trabajado con el durante mis prácticas cuando me ha tocado realizar unas mejoras en un sistema desarrollado con Django.
Mi curiosidad por aprender más me ha llevado a leer y también a codificar. En esta oportunidad les mostraré algo sencillo pero no por ello facil al principio.
Dado que tenía un código en C de un cliente daytime, pensé que sería bueno por empezar por realizar lo mismo pero en Python.
Primeramente, para obtener respuesta de día y hora necesito a quién preguntárselo, lógicamente. Para ello instalé localmente el servidor de la siguiente manera:
Aclaración: todo lo a continuación se describe fue realizado en Linux Mint Debian Edition, por lo que servirá de igual manera en Debian o cualquier otra distro basada en ella.
Aclaración: todo lo a continuación se describe fue realizado en Linux Mint Debian Edition, por lo que servirá de igual manera en Debian o cualquier otra distro basada en ella.
$sudo apt-get install xinetd
Seguidamente he configurado algunos parámetros del fichero que se encuentra bajo el directorio /etc/xinetd/daytime. Sólo ha sido necesario cambiar el valor de disable que originalmente tiene un valor yes por no. En mi caso voy a hacer pruebas sobre el protocolo tcp.
$sudo vim daytime service daytime { disable = no type = INTERNAL id = daytime-stream socket_type = stream protocol = tcp user = root wait = no }
Seguidamente recargamos el servicio:
$sudo invoke-rc.d xinetd reload
Este servicio escucha en el puerto 13, y para asegurarnos de que así sea, ejecutamos el siguiente comando en consola:
$sudo netstat -tulpn | grep 13
El resultado de ese comando sería el siguiente:
tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN 3948/xinetd
Vale, el servicio daytime ya está funcionando, ahora nos queda lo más interesate, el código en python de nuestro cliente tcp daytime.
'''Cliente tcp daytime en python Author: @OvandoVero''' import sys #importo el modulo para usar paquetes del sistema import socket #importo el modulo de sockets import errno #importo el modulo para verificacion de errores try: sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #creo el socket except socket.error: #capturo excepciones sock = None print ("Hubo un error al crear el socket") try: conectar = sock.connect(('localhost',13)) #me conecto al puerto donde corre el servicio except socket.error: sock.close() sock = None print ("Hubo un error al conectar con el servidor") try: mensaje = sock.recv(4096) #recibo mi mensaje en un buffer con esa longitud except socket.error: print ("Hubo un error al recibir") print mensaje #muestro mi mensaje sock.close() #cierro el socket
El mensaje que obtengo como respuesta es la hora y fecha del sistema ]:)
Como habrán notado, es sumamente sencillo crear sockets y conectarse a algún puerto que se encuentre escuchando y brindando algún servicio.
Proximamente estaré compartiendo algunos códigos más que he realizado donde podremos apreciar cómo manejar un servidor.
Comentarios
Publicar un comentario