Netstring library for Raku
Introduction
Work with netstrings. This currently supports generating netstrings, and
parsing a netstring from an IO::Socket
.
Usage
Generating Netstrings
use Netstring;
to-netstring("hello world!");
## returns "12:hello world!,"
my $b = Buf.new(0x68,0x65,0x6c,0x6c,0x6f,0x20,0x77,0x6f,0x72,0x6c,0x64,0x21);
to-netstring($b);
## returns "12:hello world!,";
to-netstring-buf("hello world!");
## returns Buf:0x<31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>
to-netstring-buf($b);
## returns Buf:0x<31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>
Reading Netstring from IO::Socket
use Netstring;
my $daemon = IO::Socket::INET.new(
:localhost<localhost>,
:localport(42),
:listen
);
while my $client = $daemon.accept()
{
## The client sends "12:hello world!," as a stream of bytes.
my $rawcontent = read-netstring($client);
my $strcontent = $rawcontent.decode;
say "The client said: $strcontent";
## prints "The client said: hello world!"
$client.write($strcontent.flip);
## sends "!dlrow olleh" back to the client.
$client.close();
}
Author
Timothy Totten, supernovus on #perl6, https://github.com/supernovus/
Currently maintained by the Raku github community.
License
Artistic License 2.0