The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Server side (who you are sending your request to)


use Server;

$server = Server->new(Server => name_of_host_to_bind_too, Port => port_number,
		      Queue => size_of_queue, SKey => 'shaReDSEcrET');


LOOP:
	while ($ready_to_read = $server->accept()) { # wait for next connection
		@info = $server->recv();
		# @info now contains all of the data sent from the client
		# already de-crypted
		# to send info back to the client
		$server->send("information", "to send", "back", "to" "client");
		$server->close();
	}

additional notes:

name_of_host_to_bind_too is usually the dns name assigned to the local box or
                         ip address

port_number for port's under 1024 you must be root to open

size_of_queue is the amount of backlog before a requested connection is rejected



Client Side (who you are sending your request from)

use Client;

$client = Client->new(Server => name_of_server_to_connect_to, Port => port_number,
		      SKey => 'shaReDSEcrET');

$client->send("information", "to", "send", "to" "the server");
@response = $client->recv();

print "response = @response\n";


additional notes:
the Client module closes the connection after doing a recv.  So to have
more than one exchange you need to issue a Client->new for each pair, or
you can modify the Client->recv code
  } else {
	close ($self->{'Socket'});  # remove this line
	return @response;
  }

if you modify the code you must close the socket yourself somewhere else
       close ($client->{'Socket'});