我想在 C 程序中使用BitTorrent DHT 库作为分布式哈希表。因此,我在我的机器上下载并编译了它 - 完美无瑕。现在我有一个可执行的 dht-example 输出:
Usage: dht-example [-q] [-4] [-6] [-i filename] [-b address]...
port [address port]...
我可以用这个例子做什么?如何使用 DHT:连接分布式机器、填充它或从中读取哈希表?
非常感谢阿奇姆
我想在 C 程序中使用BitTorrent DHT 库作为分布式哈希表。因此,我在我的机器上下载并编译了它 - 完美无瑕。现在我有一个可执行的 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 网络通信。
但是在您的新对等点能够连接到网络之前,它需要至少一个已连接的对等点,它可以从中获得更多对等点。这是第三和第四个参数/参数起作用的地方。在这种情况下,它是网络上已知良好节点的 IP 地址和端口组合router.bittorrent.com
。这个过程称为引导。
该程序不接受来自标准输入的指令,而是通过内核信号SIGINT
和. 用于列出您机器上的信号编号,然后在运行时使用命令获取.SIGUSR1
SIGUSR2
kill -L
ps aux | grep example-dht
example-dht
example-dht
要开始搜索 infohash 的对等点,硬编码在 中dht-example.c
,请发出命令kill -XX YYYYY
,其中XX
是SIGUSR1
信号的编号,YYYYY
是 的进程 ID dht-example
。观察dht-example
程序的标准输出。
要转储我们的存储桶和存储桶 0 中的其他节点,请发出命令kill -XX YYYYY
,其中XX
是SIGUSR2
信号的编号,YYYYY
是 的进程 ID dht-example
。观察dht-example
程序的标准输出。
对于停止dht-exmample
,发出命令kill -XX YYYYY
whereXX
是SIGINT
信号的编号,YYYYY
是 的进程 ID dht-example
。观察dht-example
程序的标准输出。