成长值: 384 签到天数: 4753 天 [LV.Master]伴坛终老
|
发表于 2025/1/6 17:57
|
显示全部楼层
|阅读模式
|Google Chrome 131.0.0.0 |Windows 10
如何用C语言代码构建一个数据包查询DHT超级节点服务器,bencode解码
自己搭建DHT超级节点服务器
https://bbs.itzmx.com/thread-111310-1-1.html
如果是国内服务器 域名需要备案,否则会被云服务商拦截,直接用ip形式吧 获得数据后 解码的话用bencode解码
具体代码实现可以调用libtorrent库,能调用库实现的就别自己造轮子去写代码,也有很些bt客户端是开源的,不过是c++语言,直接找到位置拔了代码就好了
这就是去中心化的dht 如果没有回应代表没有其他下载者和你在同一个种子上
如果你想拿其他种子的人 得用tracker服务器
但是你学校作业是dht,此时已经完成了毕业设计,就不需要进一步去研究了
这才是正确的代码连接DHT结果
发送udp包
- BitTorrent DHT Protocol
- Request arguments: Dictionary...
- Key: a
- Value: Dictionary...
- id: 05ac9e054f64f9a97cc943a5428df4d80e3903b5
- Key: id
- Value: 05ac9e054f64f9a97cc943a5428df4d80e3903b5
- target: 05ac9e054f64f9a97cc943a5428df4d80e3903b6
- Key: target
- Value: 05ac9e054f64f9a97cc943a5428df4d80e3903b6
- Terminator: e
- Request type: find_node
- Key: q
- Value: find_node
- Transaction ID: 19a7ed0de31316c2
- Key: t
- Value: 19a7ed0de31316c2
- Message type: Request
- Key: y
- Value: q
- Terminator: e
复制代码
DHT超级节点服务器ip返回
- BitTorrent DHT Protocol
- Response values: Dictionary...
- Key: r
- Value: Dictionary...
- id: 0453a561c6bf8b6f9a83b6c941b3fcb7707ddf8a
- Key: id
- Value: 0453a561c6bf8b6f9a83b6c941b3fcb7707ddf8a
- nodes: 8
- Key: nodes
- Value: 8 nodes
- Node 1 (id: 0555e854ecfbbd57d9950961306d285891b54bf9, IPv4/Port: 31.45.56.6:35265)
- ID: 0555e854ecfbbd57d9950961306d285891b54bf9
- IP: 31.45.56.6
- Port: 35265
- Node 2 (id: 05df88f1f1bbe9ebb3a6db3c870c3e99245e0d90, IPv4/Port: 95.25.237.189:10829)
- ID: 05df88f1f1bbe9ebb3a6db3c870c3e99245e0d90
- IP: 95.25.237.189
- Port: 10829
- Node 3 (id: 05e5ff6bf3a86bc38562265e6f5800746ed0f1fd, IPv4/Port: 88.185.213.231:53325)
- ID: 05e5ff6bf3a86bc38562265e6f5800746ed0f1fd
- IP: 88.185.213.231
- Port: 53325
- Node 4 (id: 05f91be21f6711607a6213a009c0087079ce0178, IPv4/Port: 119.204.119.65:32685)
- ID: 05f91be21f6711607a6213a009c0087079ce0178
- IP: 119.204.119.65
- Port: 32685
- Node 5 (id: 0554d48797a08aabd814c865955dabbec171e34a, IPv4/Port: 207.96.156.25:39599)
- ID: 0554d48797a08aabd814c865955dabbec171e34a
- IP: 207.96.156.25
- Port: 39599
- Node 6 (id: 05bd4c29e2fd4c2b15f5ecf5038c49b7689aa939, IPv4/Port: 126.23.227.105:20342)
- ID: 05bd4c29e2fd4c2b15f5ecf5038c49b7689aa939
- IP: 126.23.227.105
- Port: 20342
- Node 7 (id: 05074bd58ae8931ef5abec3ff643da905085287c, IPv4/Port: 181.45.158.18:6882)
- ID: 05074bd58ae8931ef5abec3ff643da905085287c
- IP: 181.45.158.18
- Port: 6882
- Node 8 (id: 059ed5a653079994ddc6d9af9678db9b21b079e7, IPv4/Port: 66.181.181.137:19785)
- ID: 059ed5a653079994ddc6d9af9678db9b21b079e7
- IP: 66.181.181.137
- Port: 19785
- Terminator: e
- Transaction ID: 19a7ed0de31316c2
- Key: t
- Value: 19a7ed0de31316c2
- Message type: Response
- Key: y
- Value: r
- Terminator: e
复制代码
查看我上方的握手阶段响应输出信息
|
|