Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
p-Client.pl
#!/usr/local/bin/perl -w
# p-Client.pl -- Ein einfacher RPC-Client mit RPC::pClient.
# Mit p-Server.pl benutzen!
use RPC::pClient; # CPAN-pRPC-Modul.
# Wir erzeugen erst einen aktiven Socket.
use constant RPCHOST => "localhost";
use constant RPCPORT => 9987;
$sock = IO::Socket::INET->new(PeerAddr => RPCHOST,
PeerPort => RPCPORT,
Proto => 'tcp')
or die "can't create socket: $@\n";
# Wir loggen uns beim RPC-Server ein:
use constant RPCAPP => "my-app";
use constant RPCVERSION => "0.01";
use constant RPCUSER => 'gandalf';
use constant RPCPASS => 'ctulhu';
$rpc = new RPC::pClient(sock => $sock,
application => RPCAPP,
version => RPCVERSION,
user => RPCUSER,
password => RPCPASS);
die "can't login to pRPC server: $rpc\n" unless ref($rpc);
# Der Aufruf von entfernten Funktionen hat die Form:
# @return = $rpc->Call("funcname", @paramlist);
# $str = rtime(); liefert entfernte Zeit als String.
($remtime) = $rpc->Call("rtime");
unless ($rpc->error()) { print "Remote time: $remtime\n"; };
# $str = dumpme($cmpx_ptr); liefert Data::Dumper::Dumper($cmplx_str).
($dumped) = $rpc->Call("dumpme",
[ { I => 1, II => 2, III => 3 },
{ perl => 'good!', java => 'bad?' },
"a rose is a rose is a rose..." ]);
unless ($rpc->error()) {
print "Dumped string:\n", $dumped, "\n";
}
# $cmplx = empmud($dumpedstr): Das Umgekehrte von dumpme().
use Data::Dumper;
($cmplx) = $rpc->Call("empmud", $dumped, '$VAR1');
unless ($rpc->error()) {
print( Dumper($cmplx) );
}
# $nptr = modify($optr, $fname, $pos, $newvalue)
$ptr = { Unix => [ 'fun', 'excellent', 'hackish', 'stable' ],
Windoze => [ 'boring', 'poor', 'lusers', 'unstable' ]
};
($ptr) = $rpc->Call("modify", $ptr, 'Windoze', 1, 'mediocre');
($ptr) = $rpc->Call("modify", $ptr, 'Windoze', 3, 'crashy');
($ptr) = $rpc->Call("modify", $ptr, 'Unix', 3, 'ultra stable');
($ptr) = $rpc->Call("modify", $ptr, 'The Hurd', 0, 'hackish');
print ( Dumper($ptr) );
print "I'm still living\n";
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:56:01 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|