public void Test_CreateGetPeersResponse() { var tid = DHTHelper.GetTransactionId(); var nodeId = DHTHelper.GetRandomID(); var infoHash = DHTHelper.GetRandomHashID(); var peers = new List <IDHTPeer>(); var nodes = new List <DHTNode>(); DHTMessage msg = DHTMessage.CreateGetPeersResponse(tid, nodeId, infoHash, peers, nodes); Assert.IsNotNull(msg); Assert.AreEqual(MessageType.Response, msg.Type); // TODO: test contents }
internal void SendAnnouncePeerQuery(IPEndPoint address, byte[] infoHash, byte implied_port, int port, BString token) { DHTNode node = fRoutingTable.FindNode(address); if (node != null) { long nowTicks = DateTime.Now.Ticks; if (nowTicks - node.LastAnnouncementTime < AnnounceLife.Ticks) { return; } node.LastAnnouncementTime = nowTicks; // TODO: update announce by timer, every 30m } var transactionID = DHTHelper.GetTransactionId(); var msg = DHTMessage.CreateAnnouncePeerQuery(transactionID, fLocalID, infoHash, implied_port, port, token); SetTransaction(transactionID, msg); Send(address, msg); }
public void Test_ctor() { var peersHolder = new DHTPeersHolder(); var dhtClient = new DHTClient(DHTClient.IPAnyAddress, DHTClient.PublicDHTPort, peersHolder, "x1"); Assert.IsNotNull(dhtClient); Assert.IsNotNull(dhtClient.LocalID); Assert.IsNotNull(dhtClient.Socket); Assert.AreEqual(new IPEndPoint(DHTClient.IPAnyAddress, DHTClient.PublicDHTPort), dhtClient.LocalEndPoint); dhtClient.PeersFound += OnPeersFound; dhtClient.PeerPinged += OnPeerPinged; dhtClient.QueryReceived += OnQueryReceive; dhtClient.ResponseReceived += OnResponseReceive; var tid = DHTHelper.GetTransactionId(); var msg = new DHTMessage(MessageType.Query, QueryType.Ping, null); dhtClient.SetTransaction(tid, msg); Assert.AreEqual(QueryType.Ping, dhtClient.CheckTransaction(tid)); }
public void SendAnnouncePeerQuery(IPEndPoint address, byte[] infoHash, byte implied_port, int port, BString token) { DHTNode node = fRoutingTable.FindNode(address); if (node != null) { long nowTicks = DateTime.Now.Ticks; if (nowTicks - node.LastAnnouncementTime < AnnounceLife.Ticks) { return; } node.LastAnnouncementTime = nowTicks; // TODO: update announce by timer, every 30m } var transactionID = DHTHelper.GetTransactionId(); byte[] nid = fLocalID; BDictionary sendData = DHTMessage.CreateAnnouncePeerQuery(transactionID, nid, infoHash, implied_port, port, token); SetTransaction(transactionID, new DHTMessage(MsgType.query, QueryType.announce_peer, sendData)); Send(address, sendData); }