Реализация Kademlia на Java
взял помощь отсюда.
GIT РЕПО: https://github.com/JoshuaKissoon/Kademlia
Я использую узел на порту 5000 (тот же IP-адрес), к которому я хочу загрузить свой следующий узел. Я попытался решить вышеуказанный вопрос, но это не сработало.
ошибка:
Создан узел Kad 1: 4153463435363738393437353834353637353637
java.net.BindException: Невозможно назначить запрошенный адрес: отправка дейтаграммы не удалась
в java.net.DualStackPlainDatagramSocketImpl.socketSend (собственный метод)
в java.net.DualStackPlainDatagramSocketImpl.send (Неизвестный источник)
at java.net.DatagramSocket.send (Неизвестный источник)
в kademlia.KadServer.sendMessage (KadServer.java:185)
в kademlia.KadServer.sendMessage (KadServer.java:138)
в kademlia.operation.ConnectOperation.execute (ConnectOperation.java:58)
в kademlia.JKademliaNode.bootstrap (JKademliaNode.java:257)
в Script.main (Script.java:19)
import java.io.IOException;
import java.net.InetAddress;
import kademlia.JKademliaNode;
import kademlia.node.KademliaId;
import kademlia.node.Node;
public class Script{
public static void main(String[] args){
try{
/* Setting up 2 Kad networks */
JKademliaNode kad1 = new JKademliaNode("abc", new KademliaId("ASF45678947584567567"),5005);
System.out.println("Created Node Kad 1: " + kad1.getNode().getNodeId());
KademliaId id = new KademliaId();
InetAddress ip =InetAddress.getByName("0.0.0.0");
Node kad2 = new Node(id,ip,5000);
kad1.bootstrap(kad2);
System.out.println("Kad 1: " + kad1.getNode().getNodeId() + " Routing Table: ");
System.out.println(kad1.getRoutingTable());
}
catch (IOException e){
e.printStackTrace();
}
System.out.println("Ended everything!");
}
}
Как загрузить узел, если вы знаете IP и порт только другого узла! Я видел, что в реализации Python kademlia
от brian
Мюллера, и я новичок в Java, но это совсем другое.
И какие изменения мне нужно сделать, чтобы он работал на Android?