设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 32|回复: 0

如何用C语言代码构建一个数据包查询DHT超级节点服务器,bencode解码

[复制链接]
 成长值: 384

签到天数: 4753 天

[LV.Master]伴坛终老

发表于 2025/1/6 17:57 | 显示全部楼层 |阅读模式 |Google Chrome 131.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
如何用C语言代码构建一个数据包查询DHT超级节点服务器,bencode解码

自己搭建DHT超级节点服务器
https://bbs.itzmx.com/thread-111310-1-1.html

如果是国内服务器 域名需要备案,否则会被云服务商拦截,直接用ip形式吧 获得数据后 解码的话用bencode解码
具体代码实现可以调用libtorrent库,能调用库实现的就别自己造轮子去写代码,也有很些bt客户端是开源的,不过是c++语言,直接找到位置拔了代码就好了
这就是去中心化的dht 如果没有回应代表没有其他下载者和你在同一个种子上
如果你想拿其他种子的人 得用tracker服务器
但是你学校作业是dht,此时已经完成了毕业设计,就不需要进一步去研究了

这才是正确的代码连接DHT结果
发送udp包
  1. BitTorrent DHT Protocol
  2.     Request arguments: Dictionary...
  3.         Key: a
  4.         Value: Dictionary...
  5.             id: 05ac9e054f64f9a97cc943a5428df4d80e3903b5
  6.                 Key: id
  7.                 Value: 05ac9e054f64f9a97cc943a5428df4d80e3903b5
  8.             target: 05ac9e054f64f9a97cc943a5428df4d80e3903b6
  9.                 Key: target
  10.                 Value: 05ac9e054f64f9a97cc943a5428df4d80e3903b6
  11.             Terminator: e
  12.     Request type: find_node
  13.         Key: q
  14.         Value: find_node
  15.     Transaction ID: 19a7ed0de31316c2
  16.         Key: t
  17.         Value: 19a7ed0de31316c2
  18.     Message type: Request
  19.         Key: y
  20.         Value: q
  21.     Terminator: e
复制代码


DHT超级节点服务器ip返回
  1. BitTorrent DHT Protocol
  2.     Response values: Dictionary...
  3.         Key: r
  4.         Value: Dictionary...
  5.             id: 0453a561c6bf8b6f9a83b6c941b3fcb7707ddf8a
  6.                 Key: id
  7.                 Value: 0453a561c6bf8b6f9a83b6c941b3fcb7707ddf8a
  8.             nodes: 8
  9.                 Key: nodes
  10.                 Value: 8 nodes
  11.                     Node 1 (id: 0555e854ecfbbd57d9950961306d285891b54bf9, IPv4/Port: 31.45.56.6:35265)
  12.                         ID: 0555e854ecfbbd57d9950961306d285891b54bf9
  13.                         IP: 31.45.56.6
  14.                         Port: 35265
  15.                     Node 2 (id: 05df88f1f1bbe9ebb3a6db3c870c3e99245e0d90, IPv4/Port: 95.25.237.189:10829)
  16.                         ID: 05df88f1f1bbe9ebb3a6db3c870c3e99245e0d90
  17.                         IP: 95.25.237.189
  18.                         Port: 10829
  19.                     Node 3 (id: 05e5ff6bf3a86bc38562265e6f5800746ed0f1fd, IPv4/Port: 88.185.213.231:53325)
  20.                         ID: 05e5ff6bf3a86bc38562265e6f5800746ed0f1fd
  21.                         IP: 88.185.213.231
  22.                         Port: 53325
  23.                     Node 4 (id: 05f91be21f6711607a6213a009c0087079ce0178, IPv4/Port: 119.204.119.65:32685)
  24.                         ID: 05f91be21f6711607a6213a009c0087079ce0178
  25.                         IP: 119.204.119.65
  26.                         Port: 32685
  27.                     Node 5 (id: 0554d48797a08aabd814c865955dabbec171e34a, IPv4/Port: 207.96.156.25:39599)
  28.                         ID: 0554d48797a08aabd814c865955dabbec171e34a
  29.                         IP: 207.96.156.25
  30.                         Port: 39599
  31.                     Node 6 (id: 05bd4c29e2fd4c2b15f5ecf5038c49b7689aa939, IPv4/Port: 126.23.227.105:20342)
  32.                         ID: 05bd4c29e2fd4c2b15f5ecf5038c49b7689aa939
  33.                         IP: 126.23.227.105
  34.                         Port: 20342
  35.                     Node 7 (id: 05074bd58ae8931ef5abec3ff643da905085287c, IPv4/Port: 181.45.158.18:6882)
  36.                         ID: 05074bd58ae8931ef5abec3ff643da905085287c
  37.                         IP: 181.45.158.18
  38.                         Port: 6882
  39.                     Node 8 (id: 059ed5a653079994ddc6d9af9678db9b21b079e7, IPv4/Port: 66.181.181.137:19785)
  40.                         ID: 059ed5a653079994ddc6d9af9678db9b21b079e7
  41.                         IP: 66.181.181.137
  42.                         Port: 19785
  43.             Terminator: e
  44.     Transaction ID: 19a7ed0de31316c2
  45.         Key: t
  46.         Value: 19a7ed0de31316c2
  47.     Message type: Response
  48.         Key: y
  49.         Value: r
  50.     Terminator: e
复制代码

查看我上方的握手阶段响应输出信息

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2025/1/8 04:49 , Processed in 0.088624 second(s), 20 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表