Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Reta programado / Fari forajn konektojn
Sendi kaj ricevi
Post kiam kontaktskatolo estas malfermita, vi interŝanĝas datumojn
tra ĝi. Sendu tekston per .print kaj legu tion, kio
revenas, per .recv:
my $conn = IO::Socket::INET.new(:host('raku.org'), :port(80));
$conn.print("GET / HTTP/1.0\r\nHost: raku.org\r\n\r\n");
my $response = $conn.recv;
$conn.close;
say $response.lines.first;Ĉi tio sendas minimuman HTTP-peton kaj legas la respondon de la
servilo en $response. La unua linio de respondo de
retservilo estas ĝia statusa linio.
Ĉi tiu ekzemplo bezonas funkciantan retan konekton. Plenumite, ĝi presas la statusan linion de la respondo. Ĉar
raku.orgalidirektas simplan HTTP al la sekura HTTPS-retejo, tiu linio estas alidirekto, kielHTTP/1.1 308 Permanent Redirect, prefere ol200 OK. La speciala domajnoexample.comne alidirektas, do celi la saman peton tien presas simplanHTTP/1.1 200 OKanstataŭe.
Du detaloj gravas, kiam vi parolas kun serviloj. Unue, retaj
protokoloj kutime apartigas liniojn per \r\n (ĉaretreveno
plus novlinio), ne per simpla \n, kaj tial la peto estas
skribita per \r\n. Due, .recv redonas kiujn
ajn datumojn alvenis ĝis nun; por pli grandaj respondoj vi legas en
buklo, ĝis la konekto fermiĝas.
Sendi bajtojn kaj ricevi bajtojn estas ĉio, kion kontaktskatolo vere faras. Ĉio alia — HTTP kaj la pli altnivelaj iloj en la venontaj sekcioj — estas konstruita sur ĉi tiu simpla sendo-kaj-ricevo.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Kvizo — Kontaktskatoloj | Kvizo — HTTP-petoj →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.