Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Веб-програмування / Віддалені з’єднання / Вправи / Підключіться до хоста
Розв’язання: Підключіться до хоста
Ось одне з можливих розв’язань задачі.
Код
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.