Simple web server en Python utilizando sockets

Simple web server en Python utilizando sockets

simple web server en python

Simple web server en Python utilizando socket

Por suerte utilizar python es una gozada, todo es siempre más sencillo, más rápido y más limpio, y siguiendo con la tanda de los  web server ahora toca simple web server en python.

En primer lugar os dejo algo de información de socket con python.

Vamos con el código del simple web server en python.

import socket

HOST, PORT = 'localhost', 8080

""" Primeramente descripción del socket, definimos el protocolo
de ARPA, y el type de flujo SOCK_STREAM """
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

""" A continuación definimos las opciones del socket, como siempre nos encontramos
SOL_SOCKET para definir opciones independientes al socket, y luego la
validación con SO_REUSEADDR y el valor 1 true """
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

""" Asignamos el address con .bind """
listen_socket.bind((HOST, PORT))

""" El listen le dice al socket el número de peticiones a encolar antes de
rechazar la conexión """
listen_socket.listen(1)

# Iniciamos el loop de conexión
while(True):

    # Aceptamos las conexiones entrantes
    client_connection, client_address = listen_socket.accept()

    # Guardamos la request en la variable request
    request = client_connection.recv(4096)
    
    # Enviamos las cabeceras correspondientes al socket
    client_connection.send('HTTP/1.1 200 OK\n')
    client_connection.send('Content-Type: text/html\n')
    client_connection.send('\n')
    
    # Nuestro html de la pagina principal
    http_response = """
	<!DOCTYPE html>
	<html><head><title>Servidor Web en Python</title>
	<style>body { background-color: #A9D0F5 }</style></head>
	<body><center><h1>Hola mundo!</h1><br>
        <img src='icono.png'/></center></body></html>
	""" 
    # Compraramos string para mandar las imagenes al socket
    icono = "GET /icono.png"
    favicon = "GET /favicon.ico"
    if request[:len(icono)] == icono:
        # Abrimos la imágen la leemos y la enviamos
	imagen = open("icono.png", "rb")
	client_connection.sendall(imagen.read())	
    elif request[:len(favicon)] == favicon: 
        # Abrimos, leemos y enviamos
	imagen = open("favicon.ico", "rb")
	client_connection.sendall(imagen.read())
        print "Envio el unnamed"
    else: 
	client_connection.sendall(http_response)
    
    # Cerramos que nos vamos
    client_connection.close()

Como hemos visto la cantidad de tiempo y de codigo que ahorras con python comparado con los otros lenguajes es increbile.

Si quereís visitar los ejemplos de Simple web Server, aquí os dejo los links.

Pin It on Pinterest