我熟悉分佈式哈希表(DHT)的工作原理。是否可以編寫將數據存儲到現有DHT的程序(例如Kademlia或Mainline DHT)?有沒有一個簡單的'Hello World'類型的程序可以顯示最簡單的方法來做到這一點?現有DHT的Hello World
4
A
回答
4
2
問題可能已經過時,但無論如何。
如上所述,對現有DHT說「你好」的最簡單方法是發送一個ping
消息給其中一個DHT節點。讓我們考慮基於Kademlia的Mainline DHT(MDHT)。
端口6881
上有地址爲router.bittorrent.com
的引導程序服務器。您可以將此服務器視爲永久在線的常規DHT節點。另外,您可以使用另一個節點,例如本地運行使用DHT的torrent客戶端。
我寫一個小例子在Python:
import bencode
import random
import socket
# Generate a 160-bit (20-byte) random node ID.
my_id = ''.join([chr(random.randint(0, 255)) for _ in range(20)])
# Create ping query and bencode it.
# "'y': 'q'" is for "query".
# "'t': '0f'" is a transaction ID which will be echoed in the response.
# "'q': 'ping'" is a query type.
# "'a': {'id': my_id}" is arguments. In this case there is only one argument -
# our node ID.
ping_query = {'y': 'q',
't': '0f',
'q': 'ping',
'a': {'id': my_id}}
ping_query_bencoded = bencode.bencode(ping_query)
# Send a datagram to a server and recieve a response.
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(ping_query_bencoded,
(socket.gethostbyname('router.bittorrent.com'), 6881))
r = s.recvfrom(1024)
ping_response = bencode.bdecode(r[0])
print(ping_response)
我使用bencode
模塊bencode和bdecode消息。
有關Mainline DHT協議的更多信息可以在this document。 (請注意,該協議與原Kademlia協議略有不同。)
相關問題
- 1. CUDA hello world failed
- 2. JavaScriptCore Hello world nightly
- 3. React-Typescript Hello World
- 4. Linux Shellcode「Hello,World!」
- 5. Android Hello World Exception
- 6. 編譯Hello World
- 7. haskell leksah hello-world
- 8. lauch4j hello world program
- 9. android「hello world」error
- 10. MSDOS「Hello World」EXE
- 11. GreaseMonkey Hello World
- 12. openDatabase Hello World - 2
- 13. JAVA ME Hello World
- 14. ASP.NET Beginner(Hello World)
- 15. 的Hello World錯誤
- 16. 86 MASM的Hello World
- 17. Hello World上的NoClassDefFoundError
- 18. 的Hello World在JOGL
- 19. Node.js中的Hello world
- 20. 將「Hello World」字符串反轉爲「World Hello」,出現了什麼問題?
- 21. Django Hello World虛擬機上的Hello World網絡應用程序
- 22. c#hello world not compiling
- 23. Haskell Hello world,eclipse IDE
- 24. 幫助「hello world」pbsdsh
- 25. MonoTouch Hello World for iPad
- 26. spring-mvc-project hello-world
- 27. ASP.NET hello world AJAX post
- 28. Drools hello world maven dependencies
- 29. C++ Eclipse Mac Hello World
- 30. Hello World Android程序