DHT

BitTorrent DHT 协议的 GO 实现
授权协议 MIT
开发语言 Google Go
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 不详
投 递 者 邹齐智
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DHT 是BitTorrent DHT 协议的实现,采用Go语言。主要包括以下部分:

展示截图:

安装:

go get github.com/shiyanhui/dht

使用示例:

import (
    "fmt"
    "github.com/shiyanhui/dht"
)

func main() {
    downloader := dht.NewWire()
    go func() {
        // once we got the request result
        for resp := range downloader.Response() {
            fmt.Println(resp.InfoHash, resp.MetadataInfo)
        }
    }()
    go downloader.Run()

    config := dht.NewCrawlConfig()
    config.OnAnnouncePeer = func(infoHash, ip string, port int) {
        // request to download the metadata info
        downloader.Request([]byte(infoHash), ip, port)
    }
    d := dht.New(config)

    d.Run()
}
  • 1、前言 英文版官方地址:http://www.bittorrent.org/beps/bep_0005.html DHT协议 BitTorrent使用一种叫做分布式哈希表(distributedsloppy hashtable)的技术,来实现在无tracker的torrent文件中peer的联系信息存储。这个时候,每个peer都是一个tracker。这个协议是基于Kademila协议的,并且在U

  • 在使用0.63版的Bitcomet的时候,你会在服务器列表中发现,有一个DHT NETWORK! DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。新版BitComet允许同行连接DHT网络和Tracker,也就是说在完全不连上Track

  •   元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019     DHT 算法: 在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。(百度百科)  

  • <script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); } </script> 什么是DHT网络? DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服

  • DHT

    DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。新版BitComet允许同行连接DHT网络和Tracker,也就是

  • DHT网络 DHT的全称是Distributed Hash Table,即分布式哈希表技术,是一种分布式存储方法。这种网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。和中心节点服务器不同,DHT网络中的各节点并不需要维护整个网络的信息,而是只在节点中存储其临近的后继节点信息,大幅减少了带宽的占用和资源的消耗。DHT网络还在与

  • 官网 bep文件 node-bencode用来加解密用的 概念 Kademlia算法 Kademlia是DHT网络的一种实现。在Kademlia网络中,距离是通过异或(XOR)计算的,结果为无符号整数。distance(A, B) = |A xor B|,值越小表示越近。 具体算法详细信息可以看此论文。或者去回形针视频里搜下就懂了。 KRPC协议 KRPC 是节点之间的交互协议,是由 bencod

  • 译者前序        DHT协议早在2005年就已经成为了官方BitTorrent协议的一部份,但是我竟然一直没有找到国内的官方翻译稿,所以将其进行翻译,若文中错误,欢迎各位指正。其次,若想彻底理解DHT协议的原理,建议各位阅读Kademlia协议,在本博客中,有其翻译稿,参见DHT协议基础。 本文英文版官方地址:http://www.bittorrent.org/beps/bep_0005.h

 相关资料
  • 本文向大家介绍使用Go-Back-N的协议,包括了使用Go-Back-N的协议的使用技巧和注意事项,需要的朋友参考一下 Go-Back-N 协议,也称为 Go-Back-N 自动重复请求协议,是一种数据链路层协议,它使用滑动窗口方法实现数据帧的可靠和顺序传递。这是一个滑动窗口协议的情况下,必须发送窗口大小 n 和接收窗口大小为1。 工作原理 Go – Back – N ARQ提供发送多个帧,然后再

  • 本文向大家介绍go语言实现的memcache协议服务的方法,包括了go语言实现的memcache协议服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现的memcache协议服务的方法。分享给大家供大家参考。具体如下: 完整实例代码点击此处本站下载。 1. Go语言代码如下: 2. Go语言代码: 3. Go语言代码如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 我编写了一个服务器(Go)-客户端(Java)程序,并使用protobuf进行通信。定义一个proto文件并在服务器和客户端之间共享。在服务器端: 将共享的proto文件编译为go by Protoc 按proto.marshal序列化对象 将其发送给对其服务提出请求的客户端 在客户端: 通过protoc将共享的proto文件编译成Java 通过HTTP传输获取字节 将字节反序列化为对象。 这里有

  • 问题内容: 好的,这是个大问题。我有一个用ObjC(this)编写的库。在那里,我们有一个已定义的协议。当我尝试在快速文件中使用它时,我经常得到: 类型“ XXX”不符合协议“ XXX” 为简化起见,我组成了一个测试项目-应该将其创建为Swift项目。 然后使用以下协议在内部创建ObjC头文件(我称其为StupidProtocol.h)(请注意,每个名称和值都应与给定的值完全匹配,包括大写/小写)

  • Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。 在此,我们将会讨论那些协议及哪些情形应该使用(或避免使用)他们。 本地协议 最基本的就是 本地协议(Local protocol) ,其中的远程版本库就是硬盘内的另一个目录。 这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或

  • 协议为方法、属性、以及其他特定的任务需求或功能定义蓝图。协议可被类、结构体、或枚举类型采纳以提供所需功能的具体实现。满足了协议中需求的任意类型都叫做遵循了该协议。 除了指定遵循类型必须实现的要求外,你可以扩展一个协议以实现其中的一些需求或实现一个符合类型的可以利用的附加功能。 协议的语法 定义协议的方式与类、结构体、枚举类型非常相似: protocol SomeProtocol { //

  • 本页包含内容: 协议的语法(Protocol Syntax) 对属性的规定(Property Requirements) 对方法的规定(Method Requirements) 对突变方法的规定(Mutating Method Requirements) 对构造器的规定(Initializer Requirements) 协议类型(Protocols as Types) 委托(代理)模式(Dele

  • 我试着按照你的指示去做https://github.com/golang/protobuf和https://github.com/google/protobuf/releases安装协议缓冲区。在我将bin路径从下载文件夹添加到之后,我试图运行,但它显示 有没有办法判断我是否正确安装了protobuf? 谢谢