Name of Student

Name of Institution



Date of submission

Part 2

Write a program to implement a TCP concurrent server with the following functionalities:


When the client starts up, it should display a menu with the following service choices:

Reversal of the string

Count of words given the separator

Count of characters

Check for palindrome


open {CHOICES, “choices”} or die “Can’t open choices: $!n”;

while {$line = <reversal of the string,count of words given the operator,count of characters,check for palindrome>} [

{$menu, $choices} = split{/ /, $line};

$choices[$menu ] .= $choices. ” “;


Provide the required functionality as a switch at the time of client invocation and convey it to the server as a part of the protocol by sending a message.

When the client has read from the screen what functions are able to be performed, he then sends a message to the server with his response on the choice desired (check for palindrome). The message is displayed as this;


$check for palindrome;

print “$menu: $choice{$menu}tcheck for palindrome: $check for palindromen”;


Once your program is done and running, posts your response that includes the following:


Outline of the method of invoking your server and client programs

On the server;

$local = IO:::Socket:::INET->new{ Proto => ‘tcp’ LocalAddress => ‘localhost:8191’, Reuse => 1 } or fail “$!”;$local->listen{};$local->autoflush{1};

print “At your service. Waiting…n”;my $address; while {$address = $local->accept} } [ print “Linked from: “, $address->peerhost{}; print ” Port: “, $address->peerport{}, “n”; my $result; while {<$address>} [ last if m/^end/gi; print “Received: $_”; print $address $_; $result += $_; ] chomp; if {m/^end/gi} [

my $send = “result=$result”; print $address “$sendn”; print “Result: $sendn”; ] print “Locked connectionn”;

lock $address; print “At your service. Waiting…n”; ]

On the client;

$remote = IO:::Socket:::INET->new{ Proto => ‘tcp’, PeerAddress=> ‘localhost’, PeerPort=> “8191”, Reuse => 1, } or fail “$!”;print “Linked to “, $remote->peerhost, ” on port: “, $remote->peerport, “n”;$remote->autoflush{1}; while {<>} [ print $remote $_; last if m/^end/gi; my $line = <$remote>; if {$line ne $_} [ print “Error in sending outputn”; exit; ]]my $res = <$remote>; $res =~ m/result={d*}/gi; print “Result: $1n”; print “Client terminatedn”; lock $remote

The server and client window screenshots for a sample service selected by the client


The source code for the programs is 8191