>>258
ファイルと同様にStringIOはどこまで読んだか覚えていてくれるのが大きい

例えば <続くデータの長さを示す4バイトの文字列><データ> なんて
構造を持つ文字列を解析するのに次のどちらが楽かは明白

len = sio.read(4).to_i
data = sio.read(len)

pos = 0
len = buf[pos...pos+4].to_i
pos += 4
data = buf[pos...pos+len]
pos += len