私はソケット経由で何かを送信しようとしているので、次のような単純なプロトコルを作成しました:
[メッセージ長(uint32)][パケットID(uint32)][メッセージ]
では、このプロトコルでメッセージを送信するにはどうすればよいでしょうか? 私はこれを試しました:
message = 'hi'
parent_socket.send([message.length, 2].pack('LL') + message, 0)
そしてそれはうまくいかないようです。私が得るのは、長さとパケットIDだけです。どうすればこれを理解できますか?
(更新)メッセージを受信するために使用しているコードは次のとおりです。
if child_socket.ready?
header = child_socket.read(8).unpack('LL')
length = header[0]
packet = header[1]
case packet
when 1
stdin.write(child_socket.read(length))
when 2
puts child_socket.read(length)
#send console
else
Console.show "Unknown packet : #{packet}"
end
出力は 10 です。正常に見えます (4 + 4 + 2)
その場合、長さは 2 で、パケットは 2 です。したがって、「when 2」に切り替えますが、何も出力しません。