我试图通过套接字发送一些东西,所以我做了一个简单的协议,它是:
[消息长度(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'但它什么也不输出。