如何将DHT库dht-example.c用于分布式哈希表

时间:2015-10-01 14:15:41

标签: hashtable p2p bittorrent dht kademlia

我想在C程序中使用BitTorrent DHT library作为分布式哈希表。因此我在我的机器上下载并编译它 - 工作完美无缺。 现在我有一个可执行的dht-example输出:

Usage: dht-example [-q] [-4] [-6] [-i filename] [-b address]...
                   port [address port]...

这个例子怎么办? 如何玩DHT: 连接分布式计算机,填充它还是从中读取哈希表?

非常感谢   Achim的

1 个答案:

答案 0 :(得分:1)

dht-example.c 是上述 DHT 库中提供的简约示例。

运行 make 进行编译后,您应该运行 ./example-dht 6882 67.215.246.10 6881。这将在本地端口 6882 上打开一个监听 UDP 套接字以与 DHT 网络通信。

但是在您的新对等方能够连接到网络之前,它至少需要一个已连接的对等方,以便从中获得更多对等方。这是第三个和第四个参数/参数起作用的地方。它是网络上已知良好节点的 IP 地址和端口组合,在本例中为 router.bittorrent.com。这个过程称为引导。

程序不接受来自标准输入的指令,而是通过内核信号 SIGINTSIGUSR1SIGUSR2。使用 kill -L 列出您机器上的信号编号,然后在 ps aux | grep example-dht 运行时命令 example-dht 获取 example-dht 的进程 ID。

要开始搜索硬编码在 dht-example.c 中的 infohash 的对等点,请发出命令 kill -XX YYYYY,其中 XXSIGUSR1 信号的编号,{{ 1}} 是 YYYYY 的进程 ID。观察 dht-example 程序的标准输出。

要转储桶和桶 0 中的其他节点,请发出命令 dht-example,其中 kill -XX YYYYYXX 信号的编号,SIGUSR2 是进程 ID YYYYY。观察 dht-example 程序的标准输出。

要停止 dht-example,请发出命令 dht-exmample,其中 kill -XX YYYYYXX 信号的编号,SIGINT 是 {{1} 的进程 ID }}。观察 YYYYY 程序的标准输出。