Python HTTP Server One Liner

Vom anyk gelernt und hier aufgeschrieben, damit ich’s nicht immer suchen muss.

In Python kann man schnell mal einen Webserver aufmachen, der das aktuelle Verzeichnis per HTTP zur Verfügung stellt.

Für Python 2.X:

python -m SimpleHTTPServer

Für Python 3.X:

python -m http.server

Der Server teilt einem dann mit er würde auf IP 0.0.0.0 (was natürlich nicht stimmt) und auf einem Port (gewöhnlich 8000) lauschen. Praktisch.

2 Antworten auf „Python HTTP Server One Liner“

  1. Oh, IP 0.0.0.0 stimmt schon. Wird ein (Listener-)Socket an IP 0.0.0.0 (also Wert 0 stellt man die IP als numerischen Wert dar) gebunden, dann wählt das Betriebssystem bei Verbindung mit dem Socket die passende IP-Adresse aus und akzeptiert Verbindungen auf allen (lokalen) IP-Adressen auf allen Schnittstellen.

    „Bei IPv4 wird die Wildcard-Adresse von der Konstanten INADDR_ANY spezifiziert, deren Wert normalerweise 0 ist. Das teilt dem Kernel mit, daß er die IP-Adresse auswählen soll.

    struct sockaddr_in servaddr;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

    (aus Programmieren von UNIX-Netzwerken, W. Richard Stevens, 2. Auflage, Hanser-Verlag, Seite 88, „Grundlegende TCP-Sockets)

    Das Makro htonl() kann man bei der Wildcard-Adresse auch weglassen.

    Für IPv6 ist die Socket-Adressstruktur natürlich statt 32 Bit 128 Bit breit, aber auch hier ist die Wildcard-Adresse die Adresse 0 bzw. [::] wenn man sie schreiben müsste. Der Kernel reagiert dabei wie schon im IPv4-Beispiel.

    😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.