Pet project to study P2P concepts.
- Some data structures (list, hash, trees), non-thread-safe.
- Non-blocking IO event loop.
- Kademlia DHT.
- Bencode de-/serialization.
mkdir build && cd build
meson
meson compile
kldload mqueuefs on FreeBSD.
src/ptp -h # print help
src/ptp -a 127.0.0.1 -p 2222 # start binding to 127.0.0.1:2222
- Julienne Walker's tutorials
- cjdns by Caleb James DeLisle
- Linux kernel by the Linux community
- nanomsg by Martin Sustrik
- FreeBSD bits by Niels Provos
- Nadeem Abdul Hamid's P2P Programming Framework
- Jakob Jenkov's P2P Tutorial
- BitTorrent DHT Protocol specifications by Andrew Loewenstern and Arvid Norberg
- Kademlia's paper
- consolidate integration tests
- fix cppcheck and git-hooks
- optimize memory during bencode parsing
- proper bucket management (last_seen) + use replacements
- resource storage
- save dht regularly
- integration tests for say when there are multiple clients connecting to tcp sock
- threadpool http://people.clarkson.edu/~jmatthew/cs644.archive/cs644.fa2001/proj/locksmith/code/ExampleTest/threadpool.c
- read bootstrap nodes from text file in background
- make integration (from consumers) more flexible, especially with regards to event loop