【发布时间】:2018-05-12 14:25:42
【问题描述】:
我在 Qt 中编写了简单的 torrent 客户端,但我不明白如何从跟踪器响应中获取对等方的 IP 和端口。我成功得到响应,但键 peers 的确切值看起来不可读:
d8:completei1976e10:incompletei54e8:intervali1800e5:peers6:TQ+ГХ§e
为什么会这样以及如何使这些数据可读?
在 BitTorrent 规范中,peers 的值总是以 Big-Endian 发送。我不知道这是否可能是不可读的原因,但我怀疑。
【问题讨论】:
-
见:stackoverflow.com/questions/50094674/…
T Q + Г Х § => 84 81 43 xx yy 167 (yy*256+167=??) => 84.81.43.xx:(yy*256+167) -
我看到了那个问题,但我仍然无法理解如何解码我得到的信息。请解释一下好吗?
-
问题不在于解码这个响应,而在于理解如何获得它的可读表示:
TQ+ГХ§。这不是你跟我说的。 -
TQ+ГХ§是 6 字节原始二进制数据的字符表示,4 字节 IPv4 + 2 字节 PORT 在 bigendian 中。您需要读取 4 个字节并将它们转换为 IP,然后读取 2 个字节并将它们转换为 PORT。
标签: c++ qt endianness bittorrent torrent