« オリジナルIRCBot「NGIB」作成開始 | トップページ | TalesWeaver 正式サービス開始 »

2004.09.01

「NGIB」作成日記 その1

今日は少し進展あり。ちなみにテスト時はTonIrcdを使っています。Windowsで簡単に動くIRCdってこれしかないんですもの…

まずは本日付のソース。

use strict;
use Socket;

print "Script Start!\n";

my $servername='127.0.0.1';
my $struct = sockaddr_in(6667,inet_aton($servername));

socket(SOCKET, PF_INET, SOCK_STREAM, 0)
or die('ソケット作成失敗(´・ω・`)');

connect(SOCKET, $struct)
or die('接続失敗(´・ω・`)');

select SOCKET;

$|=1;

print SOCKET ":testnick USER guest tolmoon tolsun :Ronnie Reagan\r\n";

print SOCKET ":testnick NICK Wiz\r\n";

my $buf;

while($buf=<SOCKET>)
{
print STDOUT "$buf";
}

まずみていただきたいのは

select SOCKET;

$|=1;

この2行。デフォのハンドルをSOCKETにし、そのハンドルのバッファリングをしないようにしています。これの代わりにautoflush SOCKET(1);でもいいですが、これを使う場合はFileHandleモジュールが必要になります。

そして最後のループ。SOCKETから1行読み出してそれを表示しています。これで嵌ったんですが、selectでデフォルトのハンドルをSOCKETにしているので、ただprintするだけではSOCKETに書いてしまうんですね。というわけで明示的にSTDOUTを指定。

というわけで、ともかくまぁログインはできるようになりました。

|

« オリジナルIRCBot「NGIB」作成開始 | トップページ | TalesWeaver 正式サービス開始 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/13747/1328949

この記事へのトラックバック一覧です: 「NGIB」作成日記 その1:

« オリジナルIRCBot「NGIB」作成開始 | トップページ | TalesWeaver 正式サービス開始 »