Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Web-Programmierung / Ein einfacher HTTP-Server

Auf Verbindungen lauschen

Um als Server aufzutreten, erzeugen Sie einen Socket im Lauschmodus mit dem Argument :listen und geben Adresse und Port an, auf denen gelauscht werden soll:

my $listener = IO::Socket::INET.new(
    :listen,
    :localhost('127.0.0.1'),
    :localport(8080),
);

:localhost('127.0.0.1') lauscht auf Ihrer eigenen Maschine, und :localport(8080) ist der Port, mit dem sich Clients verbinden müssen. Der Socket wartet nun, aber noch ist kein Client eingetroffen.

Um die nächste hereinkommende Verbindung anzunehmen, rufen Sie .accept auf. Es blockiert, bis sich ein Client verbindet, und liefert dann einen frischen Socket, der dieses eine Gespräch darstellt:

my $conn = $listener.accept;
say 'a client connected';

Der $listener lauscht weiter auf weitere Clients, während $conn Ihr Kanal ist, um mit diesem bestimmten zu sprechen. Ein echter Server ruft .accept in einer Schleife auf und bedient jeden Client, sobald er eintrifft.

Diese Beispiele laufen auf Ihrer eigenen Maschine; verbinden Sie sich aus einem Browser oder einem anderen Programm unter 127.0.0.1:8080 mit ihnen.

Ein Server ist also schlicht ein umgedrehter Socket: Statt :host/:port zum Hinauswählen geben Sie :listen mit :localhost/:localport, um auf Anrufe zu warten.

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Kursnavigation

Ein einfacher HTTP-Server   |   Quiz — Lauschen


💪 Oder springen Sie direkt zur Übung zu diesem Abschnitt.