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)); }