From: keiju@... (Keiju ISHITSUKA) Date: 1997-02-18T15:43:26+09:00 Subject: [ruby-list:2158] [Req] pack/unpack けいじゅ@SHLジャパンです. 最近. pack/unpackを用いてプロトコルを設計しているのですが, そこで気づ いたことを... 通信プロトコルなどでは不定長のデータはその繰り返しをプロトコルの中に入 れることがい多いと思います. 例えば, 種別ID サイズ 文字列データ のようなプロトコルをpack/unpackで場合, writeは: sock.write([ID, data.size, data].pack("nna#{data.size}") こんなかんじでまだ良いのですが. readは: id, = sock.read(2).unpack("n") # たぶん, ここでプロトコル種別毎の処理分岐 size, = sock.read(2).unpack("n") data, = sock.read(data).unpack("a#{size}") とこんな雰囲気になり結構めんどくさいです. でリクエストなのですが, 書き込みに関しては, sock.packwrite("nna$2", ID, data.size, data) のようなメソッドと, フォーマットの拡張があると良いかと思います($2は2番 目のnで取り出した数値をおくという意味). 一般にプロトコルはその種別毎にフォーマットが決まっていて, そのサイズも データを読み込む途中で確定します. 上記のような例ですと: # IDで識別した後 data.size, data = sock.packread("na$1") のようなメソッドがあれば非常に楽にプロトコルが作れるようになると思いま す. いかがでしょうか? __ .........................................石塚 圭樹@SHLジャパン(株)... ------------>アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----