0

ソケットでファイルを送信したいのですが、その長さを最初の4バイトで渡す必要があります。

これが私がCでやりたいことです:

struct
{
  int lenght; //four bytes
  char msg[40];
}dataBuf;

write(fd, &databuf, sizeof(dataBuf))

整数をソケットにプッシュして、ASCII値ではなく、もう一方の端で整数として受け取るにはどうすればよいですか?

""のようにハードコーディングしたくないので\x04\X03、を使用して実行しようとしましたpack(L*)。これは配列でのみ機能し、4バイト整数を4バイト配列に分割する方法がありません。

4

2 に答える 2

4

整数を配列に入れてから、を使用してみてくださいpack。例えば:

socket.write( [0xffff].pack("L") )
于 2012-07-24T20:58:56.757 に答える
1

BinDataの宝石を見てください。

あなたの例は次のようになります。

class DataBuf < BinData::Record
  uint32 :length
  array :msg, :initial_length => 40 do
    uint8
  end
end

io = File.open(...)
r = DataBuf.read(io)
puts "Data buffer is #{r.length} length and it has '#{r.msg}' message"

メッセージについてはよくわかりません。BinDataドキュメントの文字列セクションを参照してください。

于 2012-07-24T21:18:45.157 に答える