DHT爬虫的设计思路
2018-05-28 本文已影响40人
一开始_c8b1
DHT的数据编码方式和数据类型
1, 有四种数据类型, string number list map. 位置我在项目中自己定义了对应的java的四种类型, 他们的关系如下图所示.
看似有四种,其实只有两种数据类型, BeString和BeLong. BeString由于标准文档中没有指定string的编码格式不确定是utf8还是其它, 所以这个类中保存数据的是byte[]类型的. Belong类型也是很奇怪. 例如: 数字32. 是先转换成字符串, 然后在转成字符3 和2 . 在将字符强制转换成字节. 最后字节数组中保存这两个字节. 不清楚这种方式是否正确.
考虑到欧美人的字节编码思维, 在他们的意识中估计还是以为一个字节就是一个字符吧, 根本就就没有考虑到多字节的编码. 所以在dht的bep5的官方文档中对于字节编码没有说明. 因为utf8 也兼容ASCII码, 所以项目中尽量使用utf8编码. 具体那种情况还要后面项目起来后调试了解了.
2 , 编码方式使用的是奇葩的bencoding编码, 详情请自行百度了解