#!/usr/bin/env perl
use strict;
use warnings;
use IO::Socket::INET;
# create a connecting socket
my $peerhost = 'localhost';
my $peerport = 8000;
my $socket = new IO::Socket::INET (
PeerHost => $peerhost,
PeerPort => $peerport,
Proto => 'tcp',
);
binmode($socket, ':bytes');
$socket->blocking(0);
for(my $i = 0; $i < 5; $i++) {
syswrite($socket, chr($i));
sleep(2);
}
####
#!/usr/bin/env perl
use strict;
use warnings;
package TestServer;
use base qw(Net::Server);
sub process_request {
my ($self) = @_;
binmode(STDIN, ':bytes');
STDIN->blocking(0);
while(1) {
my $buf;
sysread(STDIN, $buf, 1);
if(defined($buf) && length($buf)) {
my $num = ord($buf);
print STDERR "GOT $num\n";
last if($num == 4);
} else {
print STDERR "...doing something else...\n";
sleep(1);
}
}
print STDERR "Done.\n";
}
TestServer->run(port => 8000);
####
2015/04/09-10:58:23 TestServer (type Net::Server) starting! pid(7799)
Resolved [*]:8000 to [::]:8000, IPv6
Not including resolved host [0.0.0.0] IPv4 because it will be handled by [::] IPv6
Binding to TCP port 8000 on host :: with IPv6
Group Not Defined. Defaulting to EGID '1000 4 20 24 27 30 46 108 124 125 130 1000'
User Not Defined. Defaulting to EUID '1000'
GOT 0
...doing something else...
...doing something else...
GOT 1
...doing something else...
...doing something else...
GOT 2
...doing something else...
...doing something else...
GOT 3
...doing something else...
...doing something else...
GOT 4
Done.
####
yes '' | openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 10 -nodes
####
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Socket::SSL;
# create a connecting socket
my $peerhost = 'localhost';
my $peerport = 8000;
my $socket = new IO::Socket::SSL (
PeerHost => $peerhost,
PeerPort => $peerport,
Proto => 'tcp',
SSL_verify_mode => SSL_VERIFY_NONE,
);
binmode($socket, ':bytes');
$socket->blocking(0);
for(my $i = 0; $i < 5; $i++) {
syswrite($socket, chr($i));
sleep(2);
}
####
#!/usr/bin/env perl
use strict;
use warnings;
package TestServer;
use base qw(Net::Server);
sub process_request {
my ($self) = @_;
binmode(STDIN, ':bytes');
STDIN->blocking(0);
while(1) {
my $buf;
sysread(STDIN, $buf, 1);
if(defined($buf) && length($buf)) {
my $num = ord($buf);
print STDERR "GOT $num\n";
last if($num == 4);
} else {
print STDERR "...doing something else...\n";
sleep(1);
}
}
print STDERR "Done.\n";
}
TestServer->run(port => 8000,
proto => 'ssl',
SSL_key_file => 'key.pem',
SSL_cert_file => 'cert.pem');
####
2015/04/09-11:04:03 TestServer (type Net::Server) starting! pid(8551)
Resolved [*]:8000 to [::]:8000, IPv6
Not including resolved host [0.0.0.0] IPv4 because it will be handled by [::] IPv6
Binding to SSL port 8000 on host :: with IPv6
Group Not Defined. Defaulting to EGID '1000 4 20 24 27 30 46 108 124 125 130 1000'
User Not Defined. Defaulting to EUID '1000'
GOT 0
GOT 1
GOT 2
GOT 3
GOT 4
Done.