diff --git a/src/example/bootstrap_fn.cc b/src/example/bootstrap_fn.cc index e58d9a1..0288087 100644 --- a/src/example/bootstrap_fn.cc +++ b/src/example/bootstrap_fn.cc @@ -18,7 +18,11 @@ bool bdSingleShotFindPeer(const std::string bootstrapfile, const std::string pee /* install search node */ bdNodeId searchId; - bdStdRandomNodeId(&searchId); + if (!bdStdLoadNodeId(&searchId, peerId)) + { + std::cerr << "bdSingleShotFindPeer(): Invalid Input Id: " << peerId; + return false; + } std::cerr << "bssdht: searching for Id: "; bdStdPrintNodeId(std::cerr, &searchId); @@ -48,6 +52,26 @@ bool bdSingleShotFindPeer(const std::string bootstrapfile, const std::string pee dht.shutdown(); + if ((status == BITDHT_QUERY_PEER_UNREACHABLE) || + (status == BITDHT_QUERY_SUCCESS)) + { + + peer_ip = bdnet_inet_ntoa(resultId.addr.sin_addr); + peer_port = ntohs(resultId.addr.sin_port); + + std::cerr << "Answer: "; + std::cerr << std::endl; + std::cerr << "\tPeer IpAddress: " << peer_ip; + std::cerr << std::endl; + std::cerr << "\tPeer Port: " << peer_port; + std::cerr << std::endl; + } + else + { + std::cerr << "Sorry, Cant be found!"; + std::cerr << std::endl; + } + return true; } diff --git a/src/example/bssdht.cc b/src/example/bssdht.cc index 9d5f0e4..97f0062 100644 --- a/src/example/bssdht.cc +++ b/src/example/bssdht.cc @@ -3,6 +3,22 @@ #include #include +void args(char *name) +{ + std::cerr << std::endl; + std::cerr << "Dht Single Shot Searcher"; + std::cerr << std::endl; + std::cerr << "Usage:"; + std::cerr << std::endl; + std::cerr << "\t" << name << " -p "; + std::cerr << std::endl; + std::cerr << std::endl; + std::cerr << "NB: The PeerId is Required to Run"; + std::cerr << std::endl; + std::cerr << std::endl; +} + + int main(int argc, char **argv) { @@ -10,6 +26,31 @@ int main(int argc, char **argv) std::string peerId; std::string ip; uint16_t port; + int c; + bool havePeerId = false; + + + while((c = getopt(argc, argv,"p:")) != -1) + { + switch (c) + { + case 'p': + peerId = optarg; + havePeerId = true; + break; + default: + args(argv[0]); + return 1; + break; + } + } + + if (!havePeerId) + { + args(argv[0]); + return 1; + } + std::cerr << "bssdht: starting up"; std::cerr << std::endl;