예제 #1
0
        public static DHTMessage CreateGetPeersResponse(
            BString transactionID, byte[] nodeId, byte[] infoHash,
            IList <IDHTPeer> peersList, IList <DHTNode> nodesList)
        {
            BList values = DHTHelper.CompactPeers(peersList);
            var   nodes  = new BString(DHTHelper.CompactNodes(nodesList));

            BDictionary sendData = new BDictionary();

            sendData.Add("t", transactionID);
            sendData.Add("y", "r");

            var r = new BDictionary();

            r.Add("id", new BString(nodeId));
            r.Add("token", new BString(infoHash.Take(2)));
            if (values != null)
            {
                r.Add("values", values);
            }
            r.Add("nodes", nodes);
            sendData.Add("r", r);

            return(new DHTMessage(MessageType.Response, QueryType.None, sendData));
        }
예제 #2
0
        public static BDictionary CreateAnnouncePeerResponse(BString transactionID, byte[] nid, IList <DHTNode> nodesList)
        {
            var nodes = new BString(DHTHelper.CompactNodes(nodesList));

            BDictionary sendData = new BDictionary();

            sendData.Add("y", "r");
            sendData.Add("t", transactionID);

            var r = new BDictionary();

            r.Add("id", new BString(nid));
            r.Add("nodes", nodes);
            sendData.Add("r", r);

            return(sendData);
        }
예제 #3
0
        public static DHTMessage CreateAnnouncePeerResponse(BString transactionID, byte[] nodeId,
                                                            IList <DHTNode> nodesList)
        {
            var nodes = new BString(DHTHelper.CompactNodes(nodesList));

            BDictionary sendData = new BDictionary();

            sendData.Add("y", "r");
            sendData.Add("t", transactionID);

            var r = new BDictionary();

            r.Add("id", new BString(nodeId));
            r.Add("nodes", nodes);
            sendData.Add("r", r);

            return(new DHTMessage(MessageType.Response, QueryType.None, sendData));
        }