Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Webprogrammeren / Verbindingen op afstand maken / Exercises / Verbind met een host
Oplossing: Verbind met een host
Hier is een mogelijke oplossing voor de taak.
Code
my $host = 'example.com';
if try IO::Socket::INET.new(:host($host), :port(80)) -> $conn {
say "connected to $host";
$conn.close;
}
else {
say "could not connect to $host";
}🦋 Je kunt de broncode vinden in het bestand connect-to-host.raku.
Uitvoer
connected to example.comOpmerkingen
IO::Socket::INET.new(:host, :port)opent de verbinding meteen en werpt als de host onbereikbaar is.Haar in
trywikkelen maakt van die exceptie eenNilin plaats van een crash. Deif … -> $connbindt de socket wanneer de verbinding lukt en draait deelse-tak wanneer dat niet zo is — de robuuste manier om een verbinding te proberen.Om de
else-tak in actie te zien, verander je$hostin een naam die niet bestaat, zoals'example.comp'. De DNS-opzoeking mislukt dan — zonder detryzou je een fout alsFailed to resolve host name 'example.comp'krijgen — maar hier maakt detryer eenNilvan, dus drukt het programma kalmcould not connect to example.compaf.