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

How to use DHT library dht-example.c for distributed hash tables

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

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

我可以用这个例子做什么? 如何使用 DHT: 连接分布式机器,填充它或从中读取哈希表?

非常感谢 阿金

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

在 运行 编译 make 之后,您应该 运行 ./example-dht 6882 67.215.246.10 6881。这将在本地端口 6882 上打开一个侦听 UDP 套接字,用于与 DHT 网络对话。

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

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

的进程 ID

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

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

要停止 dht-exmample,请发出命令 kill -XX YYYYY,其中 XXSIGINT 信号的编号,YYYYYdht-example。观察 dht-example 程序的标准输出。