libnet-1.12 > Net::Cmd

名前

Net::Cmd - ネットワーク・コマンド クラス (FTP、SMTPなどによって使われます)

概要

    use Net::Cmd;

    @ISA = qw(Net::Cmd);

説明

Net::CmdはIO::Handleのサブクラスが継承することができるメソッドを 集めたものです。これらのメソッドはFTPやSMTPといった、コマンドをベースとした プロトコルに必要とされる機能を実装しています。

ユーザ・メソッド

これらのメソッドがNet::Cmdオブジェクトへのユーザ・インターフェースを提供します。

debug ( VALUE )

このオブジェクトのデバッグ情報のレベルを設定します。VALUEが指定されなければ、 現在のステータスを返します。そうでなければ、ステータスはVALUEに変更され、 前の値を返します。

パッケージが違えば、異なるデバッグ・レベルを実装するかもしれません。 全てのコマンドと応答での0でない値は標準エラー出力(STDERR)に出力されます。

VALUEundefであれば、デバッグレベルは、このクラスのためのデフォルトの デバッグレベルに設定されます。

このメソッドは与えられたクラスのデフォルトのデバッグレベルを設定/取得するため、 staticメソッドとしても呼び出すことができます。

message ()

最後のコマンドから返されたテキストメッセージを返します。

code ()

最後のコマンドの3桁の数字コードを返します。 コマンドが保留中であれば0が返されます

ok ()

最後のコード値が0より大きく400より小さければ0でない値を返します。 これは大抵のコマンド・サーバではtrueになります。これを持たない サーバでは、このメソッドを上書きすることもできます。

status ()

現在のステータス・コードでの最も特徴的な数字を返します。もしコマンドが 保留中であればCMD_PENDINGが返されます。

datasend ( DATA )

リモート・サーバにデータを送信します。このときLFはCRLFに変換されます。 '.'(ピリオド)で始まるすべての行には、前にもう1つ'.'(ピリオド) が 付けられます。DATAには配列もしくは配列のリファレンスを指定します。

dataend ()

リモート・サーバへのデータの送信を終了させます。 既に送られたデータをCRLF付きで終了させ、伝送を完了させるための '.CRLF'を送信することにより明確に行われます。 一度データが送られるとdataend呼び出しは、responseを呼び出し、 responseがCMD_OKであればtrueを返します。

クラス・メソッド

これらのメソッドはユーザーによって呼び出されるのではなく、 Net::Cmdのサブクラスによって使われる、あるいはオーバーライドされる ことが想定されています。

debug_print ( DIR, TEXT )

デバッグ情報を出力します。DIRは方向を示し、trueはサーバーに送信される データを示します。標準エラー出力に出力される前にdebug_textを呼びます。

debug_text ( TEXT )

デバッグ情報を出力するために呼ばれます。TEXTは送信される文字列です。 このメソッドは出力される文字列を返します。

これは主に、パスワードが送信されるけれどデバッグ情報では表示したくない というFTPのようなモジュールで使われることに意味があります。

command ( CMD [, ARGS, ... ])

コマンド・サーバにコマンドを送信します。すべての引数はまず空白とCRLFを付けて、 1つにまとめられます。そしてその文字列がコマンド・サーバーに送信されます。

失敗した場合にはundefが返ります。

unsupported ()

ステータスコードを580に設定し、レスポンス・テキストを'Unsupported command'にします。 0を返します。

response ()

サーバからのレスポンスを取得します。成功すればステータスのも最も特徴的な数字が返ります。 タイムアウトなどで失敗すれば、undefが返されます。

parse_response ( TEXT )

このメソッドは1つの引数をもつメソッドとしてresponseにより呼び出されます。 3桁のステータス・コードと、これが複数行の応答の一部であり、この行はリストでは ないときにはtrueになるフラグという2つの値をもつ配列を返します。

getline ()

CRLFで区切られた1行をリモートサーバから取り出します。 失敗するとundefを返します。

注意: なんらかの理由でこのメソッドを使わないのであれば、あなたのメソッドのなかに、 いくつかdebug_printの呼び出しを入れることを忘れないで下さい。

ungetline ( TEXT )

サーバからのテキスト行の取り出しを元に戻します。

read_until_dot ()

リモートサーバからデータを、1つの'.'(ピリオド)だけの行まで読み込みます。 '..'で始まるすべての行は、最初の'.'が削除されます。

行の内容が入ったリストへのリファレンスが返されます。失敗するとundefです。

tied_fh ()

Net::Cmdオブジェクトに結び付けられたファイルハンドルを返します。 コマンドを発行した後、read() や <>を使って、このファイルハンドルから 読み込むことが出来ます。最後のドットにぶつかると、ファイルハンドルは Eofを返します。 同様に、書き込まれるデータを期待しているコマンドを発行した後、 そのサーバーにデータを送信するため、そのファイルハンドルに 書き込むことができます。

この例については、Net::POP3 と Net::SMTP をご覧ください。

EXPORTS

Net::Cmdは6つのサブルーチンをエキスポートします。そのうちの5つ CMD_INFOCMD_OKCMD_MORECMD_REJECTCMD_ERRORresponsestatusの可能な結果に対応します。6番目はCMD_PENDINGです。

作者

Graham Barr <[email protected]>

著作権(COPYRIGHT)

Copyright (c) 1995-1997 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


$Id$