Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Webprogrammeren / Een eenvoudige HTTP-server
Luisteren naar verbindingen
Om als server op te treden, maak je een socket in
luistermodus met het argument :listen, met
opgave van het adres en de poort waarop geluisterd moet worden:
my $listener = IO::Socket::INET.new(
:listen,
:localhost('127.0.0.1'),
:localport(8080),
);:localhost('127.0.0.1') luistert op je eigen machine, en
:localport(8080) is de poort waarmee clients verbinding
moeten maken. De socket wacht nu, maar er is nog geen client
aangekomen.
Om de volgende binnenkomende verbinding aan te nemen, roep je
.accept aan. Dat blokkeert tot een client
verbinding maakt en geeft daarna een verse socket terug die dat ene
gesprek voorstelt:
my $conn = $listener.accept;
say 'a client connected';De $listener blijft naar meer clients luisteren, terwijl
$conn je kanaal is om met deze bepaalde client te praten.
Een echte server roept .accept in een lus aan en handelt
elke client af zodra die binnenkomt.
Deze voorbeelden draaien op je eigen machine; maak er vanuit een browser of een ander programma verbinding mee op
127.0.0.1:8080.
Een server is dus gewoon een omgekeerde socket: in plaats van
:host/:port om uit te bellen, geef je
:listen met :localhost/:localport
om op inkomende oproepen te wachten.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Een eenvoudige HTTP-server | Quiz — Luisteren →
💪 Of ga direct naar de
oefening bij deze sectie.