如何用C语言代码构建一个数据包查询DHT超级节点服务器,bencode解码
如何用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
查看我上方的握手阶段响应输出信息
页:
[1]