C ++中的Bencode解析器

时间:2012-07-04 18:52:31

标签: c++ parsing bittorrent

在C ++中编写Bencode Parser的最佳方法是什么?虽然我对外部库的建议持开放态度,这可能会使任务变得更容易,但我认为如果我编写自己的解析器,我将学习一些有价值的C ++课程。请记住,我仍然接受以下建议:)

提前致谢

2 个答案:

答案 0 :(得分:1)

这是相对简单的,只需阅读http://en.m.wikipedia.org/wiki/Bencode#section_1for示例中的工作原理。

或者,谷歌找到了这个C ++库:https://github.com/kriben/bencode

您还可以从http://effbot.org/zone/bencode.htm获得一些灵感,这是一个简单的Python实现。

答案 1 :(得分:0)

除了重新实现轮子之外,一种可能的方法是使用libbencode库(我是作者)。它提供了基于模板的构建Bencode数据的方法。

API相当有限,但可能可以满足您的需求:

// Create an associative array of Bencode values.
bencode::dict d;

d["port wine"] = bencode::make_integer(777);
d["green"] = bencode::make_string("elephant");

// Create a new Bencode output stream
bencode::ostream os(std::cout.rdbuf());

// Put the data to the stream
os << d;