Skip to content

Latest commit

 

History

History
279 lines (184 loc) · 7.81 KB

PlClient.pod

File metadata and controls

279 lines (184 loc) · 7.81 KB

������

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";

篏������◑��篏�罔�(AUTHOR AND COPYRIGHT)

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��壔�í�ゃ�≪�潟�������������障��:

DBD::Proxy(3).