| ファイル名 | 概要 |
|---|---|
| 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 で格納するホストモジュール |
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";
}
}