Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Tīmekļa programmēšana / Attālinātu savienojumu veidošana / Exercises / Pieslēdzieties resursdatoram
Risinājums: Pieslēdzieties resursdatoram
Šeit ir iespējams risinājums uzdevumam.
Kods
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";
}🦋 Atrodiet programmu failā connect-to-host.raku.
Izvade
connected to example.comKomentāri
IO::Socket::INET.new(:host, :port)savienojumu atver uzreiz un met izņēmumu, ja resursdators nav sasniedzams.Ietinot to
try, šis izņēmums avārijas vietā pārvēršas parNil.if … -> $connpiesaista ligzdu, kad savienojums izdodas, un izpildaelsezaru, kad neizdodas — tas ir izturīgais veids, kā mēģināt pieslēgties.Lai redzētu
elsezaru darbībā, nomainiet$hostuz vārdu, kas nepastāv, piemēram,'example.comp'. DNS uzmeklēšana tad neizdodas — beztryjūs saņemtu kļūdu, piemēram,Failed to resolve host name 'example.comp'—, bet šeittryto pārvērš parNil, tāpēc programma mierīgi izdrukācould not connect to example.comp.