コード例 #1
0
        public override void Handle(IDhtEngine engine, Node node)
        {
            base.Handle(engine, node);

            PingResponse m = new PingResponse(engine.GetNeighborId(Id), TransactionId);

            engine.Send(m, node.EndPoint);
        }
コード例 #2
0
        public override void Handle(IDhtEngine engine, Node node)
        {
            base.Handle(engine, node);

            FindNodeResponse response = new FindNodeResponse(engine.GetNeighborId(Id), TransactionId);

            var result = engine.QueryFindNode(Target);

            response.Nodes = Node.CompactNode(result.Nodes);

            engine.Send(response, node.EndPoint);
        }
コード例 #3
0
ファイル: AnnouncePeer.cs プロジェクト: yuxi214/DHTSpider
        public override void Handle(IDhtEngine engine, Node node)
        {
            base.Handle(engine, node);

            DhtMessage response;

            if (engine.TokenManager.VerifyToken(node, Token))
            {
                engine.GetAnnounced(new InfoHash(InfoHash.Bytes),
                                    new IPEndPoint(node.EndPoint.Address, (int)Port.Number));
                response = new AnnouncePeerResponse(engine.GetNeighborId(Id), TransactionId);
            }
            else
            {
                response = new ErrorMessage(ErrorCode.ProtocolError, "Invalid or expired token received");
            }

            engine.Send(response, node.EndPoint);
        }