Hallo zusammen!
Muss sofort gestehen, ich bin ein Layer in Perl. Ich brauche eine RPC-Verbindung zwischen 2 Rechner. Dafür soll ich das Modul PlRPC benutzen:
PlRPC by CPAN
Wie es im Beispiel zum RPC::PlServer steht, habe ich einen einfachen Server gestartet:
MyServer.pm:
package MyServer;
use RPC::PlServer;
$MyServer::VERSION = '1.0';
@MyServer::ISA = qw(RPC::PlServer);
# Overwrite the Run() method to handle a single connection
sub Run {
my $self = shift;
my $socket = $self->{'socket'};
}
1;
server.pl:
#!/usr/bin/perl
use MyServer;
my $server = MyServer -> new({'localport'=>'1234',
'pidfile' =>'/home/tvix/server.pid',
}, \@ARGV);
$server->Bind();
Und mein Client sieht wie folgt aus.
client.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
require RPC::PlClient;
# Create a client object and connect it to the server
my $client = RPC::PlClient->new('peeraddr' => 'localhost',
'peerport' => 1234,
'application' => 'server',
'version' => '1.0',
'user' => 'nobody',
'password' => 'hello!' );
# Create an instance of $class on the server by calling
# $class->new() and an associated instance on the client.
my $object = $client->Call('NewHandle', $class, 'new', @args);
# Call a method on $object, effectively calling the same method
# on the associated server instance.
my $result = $object->do_method(@args);
Der Server läuft, aber der Client wird vom Server zurückgewiesen:
QuoteRefused by server: This is a MyServer server, go away! at /usr/lib/perl5/vendor_perl/5.8.7/RPC/PlClient.pm line 82
anscheinend, besteht er den Server-check nicht. Aber wieso?
Könnte mir bitte jemand erklären, wie man mit dem Modul einen brauchbaren Server schreibt?
Da ich wie gesagt nicht viel Ahnung vom Perl habe, fällt es mir ein bischen schwer mit der knappen Doku bei CPAN zu Recht zu kommen.
Danke voraus!