我想在C程序中使用BitTorrent DHT library作为分布式哈希表。因此我在我的机器上下载并编译它 - 工作完美无缺。 现在我有一个可执行的dht-example输出:
Usage: dht-example [-q] [-4] [-6] [-i filename] [-b address]...
port [address port]...
这个例子怎么办? 如何玩DHT: 连接分布式计算机,填充它还是从中读取哈希表?
非常感谢 Achim的
答案 0 :(得分:1)
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
的进程 ID。
要开始搜索硬编码在 dht-example.c
中的 infohash 的对等点,请发出命令 kill -XX YYYYY
,其中 XX
是 SIGUSR1
信号的编号,{{ 1}} 是 YYYYY
的进程 ID。观察 dht-example
程序的标准输出。
要转储桶和桶 0 中的其他节点,请发出命令 dht-example
,其中 kill -XX YYYYY
是 XX
信号的编号,SIGUSR2
是进程 ID YYYYY
。观察 dht-example
程序的标准输出。
要停止 dht-example
,请发出命令 dht-exmample
,其中 kill -XX YYYYY
是 XX
信号的编号,SIGINT
是 {{1} 的进程 ID }}。观察 YYYYY
程序的标准输出。