概要

 » Common.pm 
 » Agent.pm 
 » Net.pm 
 » Message.pm 
 » HostList.pm 
 » Host.pm 
Ipmsg-module-0.1.50 向けドキュメント

Ipmsg モジュールは、Perl 上で簡単に IP Messenger プロトコルを利用できるモジュールです。

このモジュール群によって基本的な IP Messenger プロトコルとエージェントを構成するのに必要な機能は実装されていますので、このモジュール群を使用すれば簡単に Perl スクリプトの中に IP Messenger を組み込むのが容易にできます。

基本的には Agent モジュールを使用します。
Ipmsg モジュール群は以下のモジュールで構成されています。

ファイル名 概要
Common.pm IP Messenger ベースクラス


Agent.pm Agent モジュール。基本的な IP Messenger の機能がある
これを使用する事で簡単に IP Messenger エージェントを構築出来る


Net.pm Net モジュール。IP Messenger の IP レベルでの制御を行う
Message.pm Net モジュール内で使用される Message モジュール。送受信用メッセージのベースクラス
 Send.pm Send モジュール。Message モジュールを継承した送信メッセージオブジェクト
 Recv.pm Recv モジュール。Message モジュールを継承した受信メッセージオブジェクト


HostList.pm Agent.pm で使用しているホストリストモジュール
Host.pm HostList.pm で格納するホストモジュール


» この項目の先頭に戻る
» この文書の先頭に戻る

Common.pm

IP Messenger 仕様・実装に関するプロパティを格納してあるモジュールです。その他の各モジュール内で呼び出していますので、各モジュールで Common モジュールのメソッドをオーバーライドして実行出来ます。

参照 Common.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Agent.pm

IP Messenger エージェントの基本的な機能を備えたモジュールです。このモジュールを使用すれば簡単にエージェントを構築出来ます。

Agent モジュールの中では、上記全てのモジュールをオブジェクトとして使用しています。基本的には Agent モジュールを使用し細かい制御をする場合に、その他のモジュール・オブジェクトを使用する事になります。

以下が簡単なエージェントの例です。

use Ipmsg::Agent;

# --------------------
# Constract Agent object

$agent = Ipmsg::Agent->new(
	Verbose		=> 1,
	BindAddr	=> '192.168.0.2',
	LocalPort	=> 2426,
	User		=> "hogehoge",
	Host		=> "hogePC",
	Group		=> "Group",
	NickName	=> "NickName",
);
if( ! $agent ){ print "error\n"; exit; }

# --------------------
# Login

$agent->add_broadcast( PeerNet => '192.168.0.255', NetMask => '255.255.255.255', PeerPort => 2425 );
$agent->Login;

# --------------------
# Main routine

while( 1 ){

	for my $i ( $agent->netif ){

		my	$recv = $agent->recv( NetIF => $i, FROMCHECK => 1 );
			$agent->send_queue( NetIF => $i, );

		next if ! $recv;

		msg_process( $recv );

	}

}

# --------------------
# Logout

$agent->Logout;
for my $i ( $agent->netif ){ while( $i->remainqueue ){ $i->send_queue; } }

# --------------------
# Subroutine

sub msg_process
{
	my ( $recv ) = shift;

	if( $recv and $recv->sendmsg ){
		last if $recv->ext eq "quit";
	}

}

たったこれだけでも十分エージェントとして機能します。

参照 Agent.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Net.pm

IP Messenger エージェントのネットワーク関連のモジュールです。低レベルのネットワーク制御を行います。
Agent モジュールでは、Net モジュールを使用してネットワーク関連の処理を行っています。

  1. ネットワークソケットのオープン
  2. メッセージの送受信
  3. 送信キュー
  4. 送信元 IP アドレス、ポート番号によるメッセージ受信制御

参照 Net.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Message.pm

 » Send.pm 
 » Recv.pm 
IP Messenger エージェントが送受信するメッセージのベースクラスです。基本的なメソッドやプロパティはこのモジュールに実装されています。
Net モジュールの中で利用されます。

参照 Message.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Send.pm

Message オブジェクトを継承した送信用メッセージオブジェクトです。
Net オブジェクトの message, reply メソッドにより作成されるオブジェクトです。

参照 Send.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Recv.pm

Message オブジェクトを継承した受信用メッセージオブジェクトです。

参照 Recv.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

HostList.pm

Entry しているホストを格納するモジュールです。HostList オブジェクトには Host オブジェクトが格納され、Host オブジェクトをまとまりとして扱うためのメソッドが実装されています。

参照 HostList.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Host.pm

HostList オブジェクトに格納されるモジュールです。Entry で取得したホスト情報を格納します。

参照 Host.pm

» この項目の先頭に戻る
» この文書の先頭に戻る

Last Updated : 2006-9-13

http://smart-pda.net/isourou/
Copyright © 2006 Mikio Fukushima. All rights reserved.

info@smart-pda.net
( 迷惑メール防止のため @ を大文字にしています。 )

Converted by Outliner