Python - serwer HTTP
Standardowa biblioteka Pythona jest dostarczana z wbudowanym serwerem WWW, który można wywołać w celu prostej komunikacji klienta WWW z serwerem. Numer portu można przypisać programowo, a serwer sieciowy jest dostępny za pośrednictwem tego portu. Chociaż nie jest to w pełni funkcjonalny serwer WWW, który może analizować wiele rodzajów plików, może analizować proste statyczne pliki html i udostępniać je, odpowiadając na nie wymaganymi kodami odpowiedzi.
Poniższy program uruchamia prosty serwer WWW i otwiera go na porcie 8001. Pomyślne uruchomienie serwera jest wskazywane przez kod odpowiedzi 200, jak pokazano na wyjściu programu.
import SimpleHTTPServer
import SocketServer
PORT = 8001
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
Po uruchomieniu powyższego programu otrzymujemy następujący wynik -
serving at port 8001
127.0.0.1 - - [14/Jun/2018 08:34:22] "GET / HTTP/1.1" 200 -
Obsługa hosta lokalnego
Jeśli zdecydujemy się uczynić serwer Pythona jako hosta lokalnego obsługującego tylko hosta lokalnego, możemy użyć do tego następującego programu.
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()
Po uruchomieniu powyższego programu otrzymujemy następujący wynik -
Serving HTTP on 127.0.0.1 port 8000 ...