www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo