Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación web / Establecer conexiones remotas / Exercises / Conéctese a un host
Solución: Conéctese a un host
Aquí tienes una posible solución para la tarea.
Código
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";
}🦋 Puedes encontrar el código fuente en el archivo connect-to-host.raku.
Salida
connected to example.comComentarios
IO::Socket::INET.new(:host, :port)abre la conexión de inmediato y lanza una excepción si el host es inalcanzable.Envolverlo en
tryconvierte esa excepción en unNilen lugar de en una caída. Elif … -> $connliga el socket cuando la conexión tiene éxito y ejecuta la ramaelsecuando no, la manera robusta de intentar una conexión.Para ver la rama
elseen acción, cambia$hostpor un nombre que no exista, como'example.comp'. La resolución de DNS falla entonces — sin eltryobtendrías un error comoFailed to resolve host name 'example.comp'—, pero aquí eltrylo convierte enNil, así que el programa imprime con calmacould not connect to example.comp.