Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • cert_pk_id
  • proxy_push_result
  • cnode_put_id
  • update-windows-build
  • proxy
  • resubscribe_on_token_change
  • actions
  • client_mode
  • llhttp
  • search_node_add
  • crypto_aes_gcm_argon2
  • ios_notifications
  • log_fmt
  • v2asio
  • fix-msvc
  • message_split
  • meson
  • build_unify
  • pingpush
  • v3.4.0
  • v3.3.1
  • v3.3.1rc1
  • v3.3.1rc2
  • v3.3.0
  • v3.2.0
  • v3.1.11
  • v3.1.10
  • v3.1.9
  • v3.1.8.2
  • v3.1.8.1
  • v3.1.8
  • v3.1.7
  • v3.1.6
  • v3.1.5
  • v3.1.4
  • v3.1.3
  • v3.1.2
  • v3.1
  • v3.0.1
40 results

opendht

  • Clone with SSH
  • Clone with HTTPS
  • DhtCpp

    A lightweight C++11 Distributed Hash Table implementation

    • Light C++11 Kademlia DHT library
    • Simple API
    • Support for arbitrary value types with common types built-in: simple blob (user data) or bittorrent-style "service announcement"
    • "Identity" layer with data signature and encryption (using GnuTLS)
    • Value edition authentified by the identity layer or with custom per-value-type hooks
    • Fast bootstrap and announce time
    • Originally based on https://github.com/jech/dht by Juliusz Chroboczek

    work in progress

    Dependencies

    • GnuTLS 3.1+, used to compute hashes and for the identity layer.

    TODO

    • Event listening
    • Documention
    • ...

    Examples

    dht::DhtRunner node;
    
    // Launch a new dht node using generated RSA keys,
    // and listen on port 4222.
    node.run(4222, dht::crypto::generateIdentity());
    
    // put some data on the dht
    std::vector<uint8_t> some_data(5, 10);
    node.put("unique_key", some_data);
    
    // get data from the dht
    node.get("other_unique_key", [](const std::vector<std::shared_ptr<Value>>& values) {
        // Callback called when values are found
        for (const auto& value : values)
            std::cout << "Found value: " << value << std::endl;
        return true; // return false to stop the search
    });