将ruby位结构写入套接字
我用Ruby编写了一个小结构:将ruby位结构写入套接字,ruby,sockets,Ruby,Sockets,我用Ruby编写了一个小结构: class UnitHeader < BitStruct default_options :endian => :little unsigned :len, 16, "Length including header and all payload messages" unsigned :msgCount, 8, "Number of messages in payload" unsigne
class UnitHeader < BitStruct
default_options :endian => :little
unsigned :len, 16, "Length including header and all payload messages"
unsigned :msgCount, 8, "Number of messages in payload"
unsigned :group, 8, "group the payload messages relate to"
unsigned :seqNumStart, 32, "Sequence number of the first payload message"
end
s.write调用似乎没有写入任何数据。我在中找不到有关此问题的任何信息,是否有ruby运算符或类似的运算符用于此目的?希望这有助于某人
# send side of socket
socket.write("#{uh}")
# recv side of socket
uhdata = socket.read(8).unpack("vcAV")
uh = UnitHeader.new(:len => uhdata[0], :msgCount => uhdata[1], :group=> uhdata[2], :seqNumStart => uhdata[3])
您提供的代码应该可以正常工作。你的问题可能在别处。以下是如何调试它以确保:
nc-l 1234>输出
,其中1234是要侦听的端口hextump output
查看结果,并将其与预期结果进行比较为什么不把它放在JSON中呢?它是二进制数据,下次必须是小尾端格式,请尝试正确描述您的问题。“不起作用”并不能帮助任何人试图帮助别人。你应该描述你一直在做什么,你期望什么,以及你遇到的意外结果。对于这个问题,似乎您在接收数据时遇到了问题,这一点从问题中根本不清楚。upvote需要15个声誉,但当我得到足够的声誉时,我会这样做!
# send side of socket
socket.write("#{uh}")
# recv side of socket
uhdata = socket.read(8).unpack("vcAV")
uh = UnitHeader.new(:len => uhdata[0], :msgCount => uhdata[1], :group=> uhdata[2], :seqNumStart => uhdata[3])