- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 bep_0005 页面阅读了 DHT 协议(protocol)。
但是当我发送 ping 查询或 find_node 查询时,服务器响应乱码文本(router.bittorrent.com:6881 或 dht.transmissionbt.com:6881)
下面是Java源代码
public String ping(final String id) {
System.out.println("Start ping:" + id);
Bencode bencode = new Bencode();
byte[] encoded = bencode.encode(new HashMap<Object, Object>() {
private static final long serialVersionUID = 4225164001818744013L;
{
put("t", "tr");
put("y", "q");
put("q", "ping");
put("a", new HashMap<Object, Object>() {
private static final long serialVersionUID = -6092073963971093460L;
{
put("id", id);
}
});
}
});
byte[] result = client.send(new String(encoded, bencode.getCharset()));
Map<String, Object> dict = bencode.decode(result, Type.DICTIONARY);
System.out.println("Bdecoded Data:" + dict);
return "";
}
发送数据包
ping 查询 = {"t":"aa", "y":"q", "q":"ping", "a":{"id":"abcdefghij0123456789"}}
bencoded = d1:ad2:id20:abcdefghij0123456789e1:q4:ping1:t2:aa1:y1:qe
根据 bep_0005 协议(protocol),响应如下:
响应 = {"t":"aa", "y":"r", "r": {"id":"mnopqrstuvwxyz123456"}}
bencoded = d1:rd2:id20:mnopqrstuvwxyz123456e1:t2:aa1:y1:re
但我的回答是:
响应 = {ip=��P���, r={id=2�NisQ�J�)ͺ����F|�g}, t=tr, y=r}
bencoded = d2:ip6:��P���1:rd2:id20:2�NisQ�J�)ͺ����F|�ge1:t2:tr1:y1:re
发送udp部分Java代码为:
public byte[] send(String sendData) {
DatagramSocket client;
try {
client = new DatagramSocket();
client.setSoTimeout(5000);
byte[] sendBuffer;
sendBuffer = sendData.getBytes();
InetAddress addr = InetAddress.getByName("router.bittorrent.com");
int port = 6881;
DatagramPacket sendPacket = new DatagramPacket(sendBuffer, sendBuffer.length, addr, port);
client.send(sendPacket);
byte[] receiveBuf = new byte[512];
DatagramPacket receivePacket = new DatagramPacket(receiveBuf, receiveBuf.length);
client.receive(receivePacket);
System.out.println("Client Source Data:" + Arrays.toString(receivePacket.getData()));
String receiveData = new String(receivePacket.getData(), "UTF-8");
System.out.println("Client String Data:" + receiveData);
client.close();
return receivePacket.getData();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
读取UTF-8格式的响应,但iso-8859-1也是乱码。
谁能帮帮我,谢谢!
最佳答案
the server response a garbled text
不,响应经过编码并包含原始二进制数据。
它不能被视为文本。
在 BEP5 中,为了使示例中的原始二进制 node_id 可打印, 它被巧妙地选择仅包含字母数字字符。
请参阅:
Bittorrent KRPC - Why are node ID's half the size of an info_hash and use every character a-z?
ip
键是一个扩展,解释如下:BEP42 - DHT Security extension
收到的回复完全有效。
TODO: Working Java code
关于java - 发送DHT查询到 "router.bittorrent.com"响应乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181862/
请像我在您的 vps 中所做的那样,然后可能会重现该问题,请替换变量 $vps_ip在以下步骤中使用您的真实 vps ip。 wget https://saimei.ftp.acc.umu.se/d
好的,假设我有一个运行有 10 个客户端的 DHT,其中包含一堆数据。 恶意客户端运行我的程序的替代版本不是相对容易吗,这可能会对我的数据进行潜在的破坏性操作(例如替换 key 、删除 key 、更改
是否允许在 Mainline DHT 中的同一 ip:port 对后面运行多个不同的 DHT 节点? 哪个节点应该回复 DHT 查询消息? 全部还是其中之一? 先感谢您。 最佳答案 简短的回答是:其中
假设我只实现了 DHT(分布式哈希表)(在 Python 中),并且我想通过 P2P 网络构建身份验证服务,但没有引入具有此类服务的集中式身份验证服务器。可以做到吗,如果可以,我该如何实现? 我熟悉
在我的新周末项目中,我决定从头开始编写一个 bittorrent 客户端,根本没有准备好使用库。经过两天寻找文档,我已经准备放弃 :smile:。我知道有 BEPs , 但他们还远远不足以理解所有规范
我正在编写一个 P2P 实现,我希望将其去中心化。然而,我在掌握如何DHT时遇到了一些困难。在像 BitTorrent 这样的协议(protocol)中是有效的。 如果没有跟踪器,客户端如何知道对等点
我想(通过 PHP)收集当前正在下载的 info_hashes 或搜索 DHT。 我见过 BTDigg 将 DHT 用于搜索引擎,我想做类似的事情。 此外,在获得哈希后,如何将哈希转换为种子文件以便获
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试了解 Distributed Hash Table (DHT)范式,因为它适合 P2P 或完全分布式的计算架构。从理论的角度来看,一旦集群建立起来,它如何管理集群数据和分配工作就很有意义了。
我目前正在使用免费糕点 DHT 进行一些性能测试。 Freepastry 是一个用 Java 完成的开源 DHT。 目标是在一定数量的节点宕机时监控对 DHT 的影响。我的问题是我不确定消除节点的最佳
kademlia paper抽象地讨论桶的组织、拆分、合并和找到要插入的正确桶,concise和 confusing条款。 §2.2 讨论了一组固定的 160 个桶,每个桶覆盖键空间的一个固定子集。但
谁能解释一下 DHT 的工作原理吗? 没有什么太重的,只是基础知识。 最佳答案 好吧,它们本质上是一个非常简单的想法。 DHT 为您提供了类似字典的界面,但节点分布在整个网络中。 DHT 的技巧在于,
我正在尝试访问 Torrent DHT 网络,但我很难弄清楚如何访问 DHT 中的“入口”节点。 How does a DHT in a Bittorent client get "bootstrap
如果您创建使用分布式哈希表 (DHT) 的新应用程序,则需要引导 p2p 网络。我的想法是您可以加入现有的 DHT(例如 Bittorrent DHT)。 这可行吗?当然,我们假设技术相同。将 Cho
我从 wiki 中获得了关于 DHT 的基本概念: 存储数据: 在 DHT 网络中,每个节点负责 key-space 的特定范围。 .要将文件存储在 DHT 中,首先,hash the file's
我试图了解 DHT可用于解决我正在处理的问题: 我有一个交易环境,专业期权交易者可以通过要求其他交易者借给他们一些风险限额来提高他们的风险限额。借贷交易者可以搜索具有某些风险参数的交易者,这些参数是每
我一直在研究 libtorrent/rasterbar 的 python 绑定(bind)。我想做的是生成一个新的“node-id”并将其重新通知给其他节点。 我读到需要创建一个“编码词典”,并且我假
我最近正在学习 Bit-torrent 协议(protocol),并且我已经使我的脚本成功通过 DHT 协议(protocol)获取大量对等地址,具体取决于文档 bep_0005: http://ww
我正在阅读有关 DHT 的资料,但很难找到有关节点发生故障时 DHT 值的后果的信息。 据我所知,如果没有数据冗余(哈希表值),单个节点的故障只会使存储在该节点中的值不可用。但是,如果我想使用 DHT
我正在尝试让 monotorrent 的 dht 实现工作,但我似乎找不到任何同行。 我已经尝试了网络上可用的大部分示例代码,例如 testclient 和 dhttest。 我尝试了几种不同的信息哈
我是一名优秀的程序员,十分优秀!