Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Уеб програмиране / Прост HTTP сървър
Слушане за връзки
За да действате като сървър, създайте сокет в режим на
слушане с аргумента :listen, като зададете
адреса и порта, на които да слуша:
my $listener = IO::Socket::INET.new(
:listen,
:localhost('127.0.0.1'),
:localport(8080),
);:localhost('127.0.0.1') слуша на вашата собствена
машина, а :localport(8080) е портът, към който клиентите
трябва да се свързват. Сокетът вече чака, но още никой клиент не е
дошъл.
За да вземете следващата входяща връзка, извикайте
.accept. Той блокира, докато не се свърже
клиент, а после връща нов сокет, представящ точно този разговор:
my $conn = $listener.accept;
say 'a client connected';$listener продължава да слуша за още клиенти, докато
$conn е вашият канал за разговор с този конкретен.
Истинският сървър извиква .accept в цикъл, обслужвайки
всеки клиент в момента на пристигането му.
Тези примери се изпълняват на вашата собствена машина; свързвайте се към тях от браузър или друга програма на адрес
127.0.0.1:8080.
Значи сървърът е просто обърнат сокет: вместо
:host/:port, за да наберете навън, задавате
:listen заедно с
:localhost/:localport, за да чакате обаждания
навътре.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Прост HTTP сървър | Тест — Слушане →
💪 Или преминете направо към
упражнението към този раздел.