我对udp跟踪器响应消息感到困惑,“ 20 + 6 * n”或“ 24 + 6 * n”或“ 20 + 6 * N”是什么意思?我尝试认为20 + 6 * n是数字(索引从16到20)= n个种子,而下标从20到20 + 6 * n的字节表示有关种子的具体信息,6个字节= 4个字节 ip和来自端口的2个字节,但结果是错误的。
Offset Size Name Value
0 32-bit integer action 1 // announce
4 32-bit integer transaction_id
8 32-bit integer interval
12 32-bit integer leechers
16 32-bit integer seeders
20 + 6 * n 32-bit integer IP address
24 + 6 * n 16-bit integer TCP port
20 + 6 * N
以下是我收到的udp跟踪器响应的示例: 0,0,0,1,28,120,62,218,0,0,12,0,0,7,182,0,0,0,1,0,0,0,0,77,73,68,7,156,0, 0,0,1,0,210,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,223,112,27,34,0,39,15,0,0,0,0,0,0 ...(全为0)
答案 0 :(得分:0)
如果数据包格式表示为C结构,则结构的最后一个成员将是flexible array member,其数组成员表示IP:端口对。
换句话说,数据包的尾部由N * 6个字节组成。 20是该尾部开始的字节偏移。