Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reta programado / Fari forajn konektojn / Exercises / Konektiĝu al gastiganto
Solvo: Konektiĝu al gastiganto
Jen ebla solvo de la tasko.
Kodo
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";
}🦋 Vi povas trovi la fontkodon en la dosiero connect-to-host.raku.
Eligo
connected to example.comKomentoj
IO::Socket::INET.new(:host, :port)malfermas la konekton tuj kaj ĵetas escepton, se la gastiganto estas neatingebla.Envolvi ĝin en
trytransformas tiun escepton enNilanstataŭ kraŝon. Laif … -> $connligas la kontaktskatolon, kiam la konekto sukcesas, kaj plenumas la branĉonelse, kiam ne — la fortika maniero provi konekton.Por vidi la branĉon
elseen ago, ŝanĝu$hostal nomo, kiu ne ekzistas, kiel'example.comp'. La DNS-serĉo tiam malsukcesas — sen latryvi ricevus eraron kielFailed to resolve host name 'example.comp'— sed ĉi tie latrytransformas ĝin enNil, do la programo trankvile presascould not connect to example.comp.