Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Веб-программирование / Удалённые соединения / Exercises / Отправьте и получите

Решение: Отправьте и получите

Вот один из возможных вариантов решения задачи.

Код

my $conn = IO::Socket::INET.new(:host('example.com'), :port(80));

$conn.print("HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\n");
my $response = $conn.recv;

$conn.close;
say $response.lines.first;

🦋 Исходный код можно найти в файле send-and-receive.raku.

Вывод

HTTP/1.1 200 OK

Комментарии

  1. .print отправляет запрос; строки протокола заканчиваются на \r\n. Запрос HEAD просит у сервера только строку состояния и заголовки, поэтому ответ невелик.

  2. .recv читает ответ, а .lines.first берёт его первую строку — строку состояния HTTP.

Навигация по курсу

Отправьте и получите   |   Простой HTTP-сервер