Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Уеб програмиране / Отдалечени връзки / Exercises / Свържете се с хост
Решение: Свържете се с хост
Ето едно възможно решение на задачата.
Код
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";
}🦋 Намерете програмата във файла connect-to-host.raku.
Изход
connected to example.comКоментари
IO::Socket::INET.new(:host, :port)отваря връзката незабавно и хвърля изключение, ако хостът е недостижим.Обвиването му в
tryпревръща това изключение вNilвместо в срив. Конструкциятаif … -> $connсвързва сокета, когато връзката успее, и изпълнява клонаelse, когато не успее — надеждният начин да се опита връзка.За да видите клона
elseв действие, сменете$hostс име, което не съществува, например'example.comp'. Тогава търсенето в DNS се проваля — безtryбихте получили грешка от рода наFailed to resolve host name 'example.comp', — но тукtryя превръща вNilи програмата спокойно отпечатваcould not connect to example.comp.