Here's a example server and socket:
server.pl
use strict;
use warnings;
use IO::Socket ();
my $listen_fh = IO::Socket->new(
Domain => IO::Socket::AF_INET(),
Proto => 'tcp',
LocalAddr => '127.0.0.1',
Listen => 1,
) or die("Unable to create listening socket: $!$/");
print('Listening on port ', $listen_fh->sockport(), '.', $/);
my $client_fh = $listen_fh->accept()
or die("Unable to accept a connection: $!$/");
print('Accepted a connection from ', $client_fh->peerhost(), ':', $cli
+ent_fh->peerport(), '.', $/);
while (<$client_fh>) {
print $client_fh uc($_);
}
print('Connection closed by client or by error.', $/);
client.pl
use strict;
use warnings;
use IO::Socket ();
my $peer_port = shift(@ARGV)
or die("Specify the port on the command line.$/");
my $server_fh = IO::Socket->new(
Domain => IO::Socket::AF_INET(),
Proto => 'tcp',
PeerAddr => '127.0.0.1',
PeerPort => $peer_port,
) or die("Unable to connect to server: $!$/");
print('Connected to ', $server_fh->peerhost(), ':', $server_fh->peerpo
+rt(), '.', $/);
print('Type stuff to be uppercased by server. Blank line to exit.', $/
+);
for (;;) {
last if (!defined($_ = <STDIN>) || $_ eq $/);
print $server_fh $_;
last if (!defined($_ = <$server_fh>));
print;
}
print('Connection closed by server or by error or by request.', $/);
|