2

RubyでBytebufferのようなオブジェクトを作成する必要があります。これがJAVAでの私の例です

int ADD_BYTES_FOR_MSG_LENGTH = 4;

Integer messageBodySize = new Integer(messageBody.getBytes().length);
byte[] messageHeader = ByteBuffer.allocate(ADD_BYTES_FOR_MSG_LENGTH).putInt(messageBodySize).array();

messageToSend = new byte[messageHeader.length + messageBodySize];

System.arraycopy(messageHeader, 0, messageToSend, 0, messageHeader.length);
System.arraycopy(messageBody.getBytes(), 0, messageToSend, messageHeader.length, messageBodySize);

メッセージ本文部分のサイズである4バイトで始まるメッセージを作成し、次に実際のメッセージを作成します。Rubyでこれを行う方法がわからないので、助けてください。

4

1 に答える 1

4

の拡張バージョンを使用して、Steamコンデンサーに対してこれを行いましたStringIO

私はメソッドを使用していませんがput*、次のように簡単に実装できます。

class StringIO

  def put_int(i)
    write [i].pack('v')
  end

end

コード元のクラスのドキュメント、および私の拡張機能をご覧ください。

于 2011-08-23T08:44:43.800 に答える