【发布时间】:2009-12-05 19:25:25
【问题描述】:
我正在使用 ruby 套接字,所以我最终尝试将一个 IP 数据包放在一起,然后我拿了一个 ip 数据包并尝试制作一个类似的新数据包。
现在我的问题是:如果数据包是:45 00 00 54 00 00 40 00 40 01 06 e0 7f 00 00 01 7f 00 00 01,这显然是十六进制,所以我将其转换为十进制,然后使用 .pack 方法转换为二进制数据,并将其传递给发送方法,然后Wireshark 向我展示了与我创建的非常不同的东西,我做错了什么???,我知道,但无法弄清楚:
@packet = 0x4500005400004000400106e07f0000017f000001 #i converted each 32 bits together, not like i wrote
@data = ""
@data << @packet.to_s
@socket.send(@data.unpack(c*).to_s,@address)
还有其他方法可以解决整个问题吗?例如,我可以直接将要发送的数据写入套接字缓冲区吗??
提前致谢。
【问题讨论】:
标签: ruby linux sockets protocols binary-data