从BitTrent的DHT引导中获得混乱的回复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从BitTrent的DHT引导中获得混乱的回复相关的知识,希望对你有一定的参考价值。
我正在尝试在Bittorrent主线中实现DHT节点。到目前为止,我在一个引导节点上进行了连接,根据一些已编码的示例,查询似乎很好但是我得到的结果的一部分都是乱码的(包含实际数据的部分):
d2:ip6:µ§ û©Å1:rd2:id20:ëÿ6isQÿJì)ͺ«òûãF|Âge1:t2:aa1:y1:re
到目前为止这是我的代码:
private static String serverName = "router.utorrent.com";
private static int port = 6881;
private static String packet = "d1:ad2:id20:abcdefghij0123456789e1:q4:ping1:t2:aa1:y1:qe";
public static void main(String[] args) {
int port = Main.port;
InetAddress address = InetAddress.getByName(Main.serverName);
DatagramSocket socket = new DatagramSocket();
byte[] buf = Main.packet.getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);
socket.send(packet);
byte[] recBuf = new byte[2048];
DatagramPacket recPacket = new DatagramPacket(recBuf, recBuf.length);
socket.receive(recPacket);
System.out.println(new String(extract(recPacket)));
}
private static byte[] extract(DatagramPacket packet) {
byte[] data = packet.getData();
int offset = packet.getOffset();
int length = packet.getLength();
byte[] copy = new byte[length];
System.arraycopy(data, offset, copy, 0, copy.length);
return copy;
}
我不确定我是否有图表集问题,或者有一些我无法在任何地方找到的编码。
答案
你的回答对我来说是正确的。听起来你希望DHT协议只使用ascii字符,但事实并非如此。 160位节点ID传输为20个字节,IP和端口传输为6个字节。
以上是关于从BitTrent的DHT引导中获得混乱的回复的主要内容,如果未能解决你的问题,请参考以下文章