RPC::PlClient - PlRPC��壔�í�ゃ�≪�潟�������吾�����������Perl��≦宍
require RPC::PlClient;
# ��壔�í�ゃ�≪�潟����祉�ŝ����吾�с�壔�����篏������������泣�若����若���・膓������障��
my $client = RPC::PlClient->new('peeraddr' => 'joes.host.de',
'peerport' => 2570,
'application' => 'My App',
'version' => '1.0',
'user' => 'joe',
'password' => 'hello!');
# $class->new()�����若�吟�������˨����������泣�若����若��$class��勉�ゃ�潟�鴻�帥�潟�鴻�����
# ��壔�í�ゃ�≪�潟�����絲上����������ゃ�潟�鴻�帥�潟�鴻��篏���������障�����
my $object = $client->Call('NewHandle', $class, 'new', @args);
# $object��勉�<�純����������若�喝�冴����障�����絎������˨�壠嚳綽���������泣�若����若�祉�ゃ�潟�鴻�帥�潟�鴻�
# ��������<�純����������若�喝�冴����障�����
my $result = $object->do_method(@args);
PlRPC (Perl RPC) ���Perl�����若�鴻�勉�壔�í�ゃ�≪�潟��鐚���泣�若����若�祉�≪����ŝ�宴�若�激�с�潟�� ��吾�����������膂≦����˨�������������宴�若�吾�с�����RPC::PlServer�����泣�若����弱�眼�т戎��������� ��������宴�若�吾�с�����������RPC::PlClient ��壔����������������������勉�������с����������� �����勰�������˨�ゃ����⓾�� RPC::PlServer(3)������荀с��������������
PlRPC��壔�壔�í�ゃ�≪�潟����˨�����絎�茵������������<�純�������勉�祉��������絎�臂í������������� ��������������障�����箴������違�泣�若����若�壔�<�純����� "multiply" �����壔�í�ゃ�≪�潟���� ���箴���������������障����������勉�������壔�í�ゃ�≪�潟����с�勰�∽�違�勐�弱�冴����壚札筝���勉�������˨�ŝ��
@result = $client->Call('multiply', $a, $b);
��泣�若����若�с�壚札筝���勉��������絲上����������弱�冴�����絲上����ャ����������障��
$server->multiply($a, $b);
��医�弱�冴����勛�������壔�壔�壔�í�ゃ�≪�潟����̬拶��������������壔�í�ゃ�≪�潟����勉�<�純����� ��勐�弱�冴����������☀����������障�����膂≦����с�����鐚� :-)
- $client = new(%attr);
-
鐚���壔�í�鴻�祉�<�純�����鐚���壔�í�ゃ�≪�潟����祉�潟�潟�鴻����í�壔�帥����泣�若����若���・膓���������� ��壔�í�ゃ�≪�潟����祉�ŝ����吾�с�壔�����菴������障����������í�若�勐�翫����˨��Perl��勌��紊���� ��������������障�������������у�後�������˨�壚札筝���勉�������˩戎�����障��鐚�
$client = eval { RPC::PlClient->new ( ... ) }; if ($@) { print STDERR "Cannot create client object: $@\n"; exit 0; }
The method accepts a list of key/value pairs as arguments. Known arguments are:
- peeraddr
- peerport
- socket_proto
- socket_type
- timeout
-
������������IO::Socket::INET���PeerAddr,PeerPort,Proto,Type�������� Timeout絮���с��絲上�������障�������泣�若����惹・膓���壔�����������IO::Socket::INET->new()�� 羝<����������˨�����腆榊����������障�����
- socket
-
�・膓����腆榊�����������緇����IO::Socket��ゃ�潟�鴻�帥�潟�鴻�壔����勐����с����主����������障����� ������篋������ɱ����ʃ昆��ф・膓����腆榊����������������違����㋝�ŝ��IO::Socket��勉�ゃ�潟�鴻�帥�潟�鴻��篏������� new��<�純�������吾��socket絮���с�������〠検��������������с����障����������勉�������ɱ�翫����� 筝�荐���勐����с�夌�∴����������障�����
- application
- version
- user
- password
-
���������PlRPC��勤��荐弱�☎����勌�������с�������������壔�壔�í�ゃ�≪�潟����壔�≪����ŝ�宴�若�激�с�喝����� �����㏍����潟�˨�祉����若�吾�с�潟�������⓾�ŝ����激�с�潟�с�⓾�若�九����������鴻�壔�若�����羝<�� ��㏍�違�ゃ�喝�☎�����緇������ŝ�������違�ŝ����障�������������������勐����違�壔�泣�若����若� Application, Version���������User��<�純�������˨����c�〠�宴�������障�����
- compression
-
Set this to off (default, no compression) or gzip (requires the Compress::Zlib module).
- cipher
-
�����勐����с�奝��絽吾�̥亜����������垸�����菴遵����������������˩戎��������障�����PlRPC��夌�劫���� ����垸����号����с�壔�ŝ����������㏍����壩���垸��API��̥����割�������������⓾����障����������勐����с� blocksize,encrypt��������� decrypt��<�純����������泣����若�������⓾�������ŝ����吾�с�壔���� ��ŝ����障�����箴������違��Crypt::DES ��������� Crypt::IDEA�����������������ゃ�潟�帥�若����с�若�鴻�� ��泣����若�������⓾����障�����
絎�茵�筝㏍������垩��荐㊤����������������壔�������������с�����������������������羈���������⓾����������� 鐚�undef���絮���с�勐�ゃ�������☀┃絎��������������垸�����罩≪����障��鐚�������������筝≦�眼��腆阪���� ����垩�勉�≪�若�����紊���眼�����綽�荀������������障�����
篏睡��箴�:
use Crypt::DES; $cipher = Crypt::DES->new(pack("H*", "0123456789abcdef")); $client = RPC::PlClient->new('cipher' => $cipher, ...);
- maxmessage
-
��泣�若����剛����醇�紙��(denial of service attacks)�����帥����������������壔�í�ゃ�≪�潟���� ��泣�若����若�т困��������������<����祉�若�吾�勐ぇ��������壠�狗����������障�������������í�˨���� 筝�������65536�����ゃ����с�����
- debug
-
�����������違�勉�<����祉�若�吾����ャ�������������˨�������㏍�違�祉�㋘����˨����≦宍�����障�����
- logfile
-
��������í�˨����с�壔�壔�í�ゃ�≪�潟�����syslog(Unix)��障����壔�ゃ����潟����祉�㏍��(Windows)��˨�㏍�違�� ��阪�������障�������í�<��������篏帥����ŝ��������logfile���TRUE��ゃ��羝<����違����㏍�違�壚�������������� �����<�ゃ�˨����潟����˨��IO::Handle��勉�ゃ�潟�鴻�帥�潟�鴻����阪����������障�������������ゃ����鴻�˨�í�若� ��������違��stderr�����阪����������障�����
篏睡��箴�:
# stderr��吾�㏍�医�阪��: my $client = RPC::PlClient->new('logfile' => 1, ...); # 'my.log'��˨�㏍�医�阪��: my $file = IO::File->new('my.log', 'a') || die "Cannot create log file 'my.log': $!"; my $client = RPC::PlClient->new('logfile' => $file, ...);
- @result = $client->Call($method, @args);
-
(��ゃ�潟�鴻�帥�潟�鴻�祉�<�純�����)��泣�若����若�с�<�純����������若�喝�冴����障��;綣���違� ��泣�若����若�祉�壔�í�鴻�勉�<�純�������������<�純�������弱�冴��綣���違�˨�ŝ����障����� 罩e幻��с�������違����<�純�������勛��������菴������障�������������с�ŝ��������Perl箴������������������障�����
箴�:
@results = eval { $client->Call($method, @args }; if ($@) { print STDERR "An error occurred while executing $method: $@\n"; exit 0; }
- $cobj = $client->ClientObject($class, $method, @args)
-
(��ゃ�潟�鴻�帥�潟�鴻�祉�<�純�����)��壔�í�ゃ�≪�潟����眼�勉�ŝ����吾�с�壔����勐�������宴�����薊������祉� 膂≦����˨��������篋����絎�臂í����������<�純��������篏睡����с����障�������㏍�頥������������壔�í�ゃ�≪�潟����� �����ŝ����勉�������勉�泣�若����若�ŝ����吾�с�壔����勤;�憗��篏���������障�������泣�若����若��$sobj��������� ��ŝ����吾�с�壔�������壔�í�ゃ�≪�潟�����絲上��������$cobj��������c�⓾�������������障�������������☖札筝��� �����������若�喝�冴����障��鐚�
@results = $cobj->my_method(@args);
��������壔�������˨�泣�若����弱�眼�с�勌札筝���勐�弱�冴�����絲上����ャ����������障��鐚�
@results = $sobj->my_method(@args);
��������☖����������㏍�違�í�����菴遵����������������ŝ�靚�������菴������障����� ��������с��RPC::PlClient::Object��ゃ�潟�鴻�帥�潟�鴻��$cobj�����í�勉�������˩�������������勉�� �����������遺札筝���勉�������˨����障��:
my $cobj = $client->ClientObject($class, 'new', @args);
��������壔�泣�若����若�т札筝���勐�弱�冴�����綣����莎激�������障��鐚�
my $sobj = $class->new(@args);
��泣�若����若�˨��$server->{'methods'}�����ï����̬┃絎���������������˨����������������壔�í�鴻� ��<�純�������勌検��鴻����狗�������������������с��������������羈���������⓾��������������
��������с��MD5��壔�í�ゃ�≪�潟����勌�������ŝ��膂≦����ŝ����㏍�違�í�����篏���������障����� ��泣�若����若�˨��MD5��≪�吾�ャ�若�˨����ゃ�潟�鴻����若�˨�������������ゃ�吾�с�鴻�����篏���������障����� ��������с�壔�壔�í�ゃ�≪�潟�����������������腓冴����障�������泣�若����守�������勌���� RPC::PlServer���man�����若�吾�˨�������障�����RPC::PlServer(3)������荀с��������������
#!/usr/local/bin/perl
use strict; # 絽吾�˨�������御����с��
require RPC::PlClient;
# 絎���
my $MY_APPLICATION = "MD5_Server";
my $MY_VERSION = 1.0;
my $MY_USER = ""; # ��泣�若����若����⓾�若�区��荐若��
my $MY_PASSWORD = ""; # 荀�羆������⓾����障�����
my $hexdigest = eval {
my $client = RPC::PlClient->new
('peeraddr' => '127.0.0.1',
'peerport' => 2000,
'application' => $MY_APPLICATION,
'version' => $MY_VERSION,
'user' => $MY_USER,
'password' => $MY_PASSWORD);
# ��泣�若����若��MD5��ŝ����吾�с�壔����
# ��∫�c�������壔�í�ゃ�≪�潟����祉�ŝ����吾�с�壔�����篏���������障�����
# $context = MD5->new()
# �����泣�若����寂����у��茵������障�����
my $context = $client->ClientObject('MD5', 'new');
# ��泣�若����若�˨����ゃ�吾�с�鴻�����荐�膊���������障�����
# $context->add("This is a silly string!");
# $context->hexdigest();
# �����泣�若����若�у��茵������障�����
$context->add("This is a silly string!");
$context->hexdigest();
};
if ($@) {
die "An error occurred: $@";
}
print "Got digest $hexdigest\n";
The PlRPC-modules are
Copyright (C) 1998, Jochen Wiedmann
Am Eisteich 9
72555 Metzingen
Germany
Phone: +49 7123 14887
Email: joe@ispsoft.de
All rights reserved.
You may distribute this package under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
PlRPC::Server(3), Net::Daemon(3), Storable(3), Sys::Syslog(3), Win32::EventLog
��≪����ŝ�宴�若�激�с�潟�勌����������⓾��DBI Proxy��壔�í�ゃ�≪�潟�������������障��: