#!/usr/local/bin/perl
# client.pl
use strict;
use Socket;
use Time::HiRes qw( sleep );
use IO::Handle;
my $prot = getprotobyname('tcp');
my $host = inet_aton("localhost");
socket(SOCK, AF_INET, SOCK_STREAM, $prot) or die("socket failed to start");
my $dest_addr = sockaddr_in(5003, $host);
connect(SOCK, $dest_addr) or die("Connect failed");
my $data = 'aaaaaaaaaaaaaaaaaaaaaaaa';
while (1) {
print STDERR "do a read\n";
sysread(SOCK, $data, 1024); # reads the data on the servers socket
# but when loop around again the data is still there as server
# has not written anything new
print STDERR "data was $data\n";
sleep(0.2);
}
close SOCK;
####
#!/usr/bin/perl
# server.pl
use strict;
use warnings;
use IO::Socket::INET;
my $sock = IO::Socket::INET->new(
Proto => 'tcp',
LocalPort => 5003,
Listen => 1,
) or die;
my $client = $sock->accept()
or die;
for (;;) {
my $x = sprintf( '%04d', rand(1000) );
print( "$x\n" );
print $client ( $x ) or last;
sleep(1);
}
####
use IO::Handle;
my $prot = getprotobyname('tcp');
my $host = inet_aton("localhost");
socket(SOCK, AF_INET, SOCK_STREAM, $prot) or die("socket failed to start");
my $dest_addr = sockaddr_in(5003, $host);
connect(SOCK, $dest_addr) or die("Connect failed");
####
use IO::Socket::INET;
my $sock = IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => 'localhost',
PeerPort => 5003,
) or die $!;