public void Test_GetRandomHashID() { var randShaId = DHTHelper.GetRandomHashID(); Assert.IsNotNull(randShaId); Assert.AreEqual(20, randShaId.Length); }
public void Test_PeersFoundEventArgs() { byte[] infoHash = DHTHelper.GetRandomHashID(); List <IPEndPoint> peers = new List <IPEndPoint>(); var evt = new PeersFoundEventArgs(infoHash, peers); Assert.IsNotNull(evt); Assert.AreEqual(infoHash, evt.InfoHash); Assert.AreEqual(peers, evt.Peers); }
public void Test_CreateGetPeersQuery() { var tid = DHTHelper.GetTransactionId(); var nodeId = DHTHelper.GetRandomID(); var infoHash = DHTHelper.GetRandomHashID(); DHTMessage msg = DHTMessage.CreateGetPeersQuery(tid, nodeId, infoHash); Assert.IsNotNull(msg); Assert.AreEqual(MessageType.Query, msg.Type); Assert.AreEqual(QueryType.GetPeers, msg.QueryType); // TODO: test contents }
public void Test_CreateAnnouncePeerQuery() { var tid = DHTHelper.GetTransactionId(); var nodeId = DHTHelper.GetRandomID(); var infoHash = DHTHelper.GetRandomHashID(); DHTMessage msg = DHTMessage.CreateAnnouncePeerQuery(tid, nodeId, infoHash, 1, 1, new BString("XX")); Assert.IsNotNull(msg); Assert.AreEqual(MessageType.Query, msg.Type); Assert.AreEqual(QueryType.AnnouncePeer, msg.QueryType); // TODO: test contents }
private void SendShakeHand() { var peer = DHTHelper.GetRandomHashID(); var list = new List <byte>(); list.Add(0x13); list.AddRange(Encoding.ASCII.GetBytes("BitTorrent protocol")); list.AddRange(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 }); list.AddRange(InfoHash); list.AddRange(peer); fSocket.Send(list.ToArray(), SocketFlags.None); }
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 }
public static DHTMessage CreateFindNodeQuery(BString transactionID, byte[] nodeId) { BDictionary sendData = new BDictionary(); sendData.Add("t", transactionID); sendData.Add("y", "q"); sendData.Add("q", "find_node"); #if IP6 var want = new BList(); want.Add("n6"); sendData.Add("want", want); #endif var args = new BDictionary(); args.Add("id", new BString(nodeId)); args.Add("target", new BString(DHTHelper.GetRandomHashID())); sendData.Add("a", args); return(new DHTMessage(MessageType.Query, QueryType.FindNode, sendData)); }