To reduce the confusion, I am putting the code below
server.pl
use strict;
use Socket;
my $port = shift || 7890;
my $proto = getprotobyname('tcp');
socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die "setsock: $!";
my $paddr = sockaddr_in($port, INADDR_ANY);
bind(SERVER, $paddr) or die "bind: $!";
listen(SERVER, SOMAXCONN) or die "listen: $!";
print "SERVER started on port $port\n";
my $client_addr;
while ($client_addr = accept(CLIENT, SERVER)) {
my ($client_port, $client_ip) = sockaddr_in($client_addr);
my $client_ipnum = inet_ntoa($client_ip);
my $client_host = gethostbyaddr($client_ip, AF_INET) ;
print "got a connection from: $client_host"," [$client_ipnum]\n";
$| = 1;
print CLIENT "Hello from the server \n\n ";
my $response;
# Trying to read client
while ( defined ($response = <$client_addr>) ){
print "Response from client : $response" ;
}
sleep(1);
close CLIENT;
}
client.pl
#! /usr/bin/perl -w
# client1.pl - a simple client
use strict;
use Socket;
my $host = shift || 'sajan.random.com';
my $port = shift || 7890;
my $proto = getprotobyname('tcp');
my $iaddr = inet_aton($host);
my $paddr = sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
connect(SOCKET, $paddr) or die "connect: $!";
my $line;
while ($line = <SOCKET>) {
$| = 1;
print $line;
# Trying to send something to server
print SOCKET "Client says hellooooo toooo !!! ";
open my $tfh, " >> /tmp/sajan.tmp";
print $tfh $line;
close $tfh
}
close SOCKET or die "close: $!";
|