GetsSafe

GetsSafe は gets_safe メソッドを定義するモジュールです。 gets_safe メソッドは、gets にタイムアウト機能と1行のバイト数制限機能をつけたものです。

ダウンロード

必要なもの

ライセンス

このプログラムは Ruby ライセンスに従います。

使用例

以下は 9999 ポートで接続を待ち受け、クライアントから入力された行を出力します。 接続後 100秒以内にデータがなかったり、入力された行が 1024 バイト以上の場合はエラーになります。

require "socket"
require "getssafe"

sock = TCPServer.new(9999)
s = sock.accept
class <<s
  include GetsSafe
end
p s.gets_safe(nil, 100, 1024)

次のようにして gets を置き換えることもできます。

class <<s
  include GetsSafe
  alias gets gets_safe
end
s.timeout = 100
s.gets           # 100秒でタイムアウト

メソッド

gets_safe(rs=nil, timeout=nil, maxlength=nil)
self から1行読み込んで返します。 rs は IO#gets と同じです。rs に nil を指定した場合は $/ が使用されます。 timeout はタイムアウトまでの秒数です。timeout を過ぎても入力がない場合は Errno::ETIMEDOUT 例外を生成します。 maxlength は1行の最大バイト数です。1行が maxlength 以上になる場合は、Errno::E2BIG 例外を生成します。
timeout(), timeout=(t)
タイムアウト値を設定します。デフォルトでは無制限です。
maxlength(), maxlength=(len)
1行の最大バイト数を設定します。デフォルトでは無制限です。

履歴

0.2 2004/12/02
0.1 2004/10/26

とみたまさひろ

Last modified: Thu Dec 2 15:06:35 JST 2004