Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione web / Stabilire connessioni remote / Exercises / Collegatevi a un host
Soluzione: Collegatevi a un host
Ecco una possibile soluzione del compito.
Codice
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";
}🦋 Trova il programma nel file connect-to-host.raku.
Output
connected to example.comCommenti
IO::Socket::INET.new(:host, :port)apre subito la connessione e solleva un’eccezione se l’host è irraggiungibile.Avvolgerla in
trytrasforma quell’eccezione in unNilinvece che in un crollo. L’if … -> $connlega il socket quando la connessione riesce ed esegue il ramoelsequando non riesce — il modo robusto di tentare una connessione.Per vedere all’opera il ramo
else, cambia$hostin un nome che non esiste, come'example.comp'. La risoluzione DNS fallisce allora — senza iltryotterresti un errore comeFailed to resolve host name 'example.comp'— ma qui iltrylo trasforma inNil, quindi il programma stampa con calmacould not connect to example.comp.