Perl
Chilkat2 Perl
Socket Receive String Until Specific Byte Value is Received
Demonstrates the Chilkat Socket ReceiveStringUntilByte method.Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
my $sock = Chilkat2::Socket->new;
# --------------------------------------------------------------------
# This example uses the public TCP echo service at https://tcpbin.com/
# --------------------------------------------------------------------
my $useTls = 0;
my $port = 4242;
my $maxWaitMs = 5000;
my $success = $sock->Connect('tcpbin.com', $port, $useTls, $maxWaitMs);
if (!$success) {
print $sock->LastErrorText, "\n";
exit;
}
# Wait a max of 2 seconds for a response..
$sock->MaxReadIdleMs(2000);
# Send some strings, each terminated by a 0 byte.
$sock->SendString('This is the 1st string');
$sock->SendByte(0);
$sock->SendString('This is string number 2');
$sock->SendByte(0);
# The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
$sock->SendByte(10);
# Now let's receive what is echoed back....
# Receive each string and the NULL byte.
# The call to ReceiveStringUntilByte will receive incoming data until the lookForByte is encountered.
# The lookForByte is receive and discarded (it is not returned in the string)
my $lookForByte = 0;
my $s1 = $sock->ReceiveStringUntilByte($lookForByte);
if (!$sock->LastMethodSuccess) {
print $sock->LastErrorText, "\n";
exit;
}
print $s1, "\n";
my $s2 = $sock->ReceiveStringUntilByte($lookForByte);
if (!$sock->LastMethodSuccess) {
print $sock->LastErrorText, "\n";
exit;
}
print $s2, "\n";
# The echo server will also echo back the final LF
$sock->ReceiveByte(1);
$maxWaitMs = 100;
$sock->Close(100);
# Output:
# This is the 1st string
# This is string number 2