Python - Server HTTP

La libreria standard Python viene fornita con un server web integrato che può essere richiamato per una semplice comunicazione con il server web client. Il numero di porta può essere assegnato a livello di programmazione e si accede al server Web tramite questa porta. Sebbene non sia un server web completo in grado di analizzare molti tipi di file, può analizzare semplici file html statici e servirli rispondendo con i codici di risposta richiesti.

Il programma seguente avvia un semplice server web e lo apre sulla porta 8001. Il corretto funzionamento del server è indicato dal codice di risposta 200 come mostrato nell'output del programma.

import SimpleHTTPServer
import SocketServer
PORT = 8001
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()

Quando eseguiamo il programma sopra, otteniamo il seguente output:

serving at port 8001
127.0.0.1 - - [14/Jun/2018 08:34:22] "GET / HTTP/1.1" 200 -

Al servizio di un host locale

Se decidiamo di rendere il server python come host locale che serve solo l'host locale, allora possiamo usare il seguente programma per farlo.

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"
if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

Quando eseguiamo il programma sopra, otteniamo il seguente output:

Serving HTTP on 127.0.0.1 port 8000 ...