public IAnnounceResponse GetResponse()
        {
            Random random = new Random();

            UdpConnectRequestPacket connectRequest = new UdpConnectRequestPacket();
            connectRequest.action = 0;
            connectRequest.transaction_id = random.Next();

            Send(connectRequest);
            UdpConnectResponsePacket connectResponse = Receive<UdpConnectResponsePacket>(
                response => response.transaction_id == connectRequest.transaction_id,
                new Action(() => Send(connectRequest))
                );

            UdpAnnounceRequestPacket announceRequest = UdpRequset;
            announceRequest.connection_id = connectResponse.connection_id;
            announceRequest.transaction_id = random.Next();
            announceRequest.ip = Dns.GetHostAddresses(Dns.GetHostName())[0];
            announceRequest.key = random.Next();
            announceRequest.extensions = 0;

            Send(announceRequest);
            UdpAnnounceResponsePacket announceResponse = Receive<UdpAnnounceResponsePacket>(
                response => response.transaction_id == announceRequest.transaction_id,
                new Action(() => Send(announceRequest))
                );

            return responseFactory.CreateResponse(announceResponse);
        }
Esempio n. 2
0
        public IScrapeResponse GetResponse()
        {
            Random random = new Random();

            UdpConnectRequestPacket connectRequest = new UdpConnectRequestPacket();
            connectRequest.action = 0;
            connectRequest.transaction_id = random.Next();

            Send(connectRequest);
            UdpConnectResponsePacket connectResponse = Receive<UdpConnectResponsePacket>(
                response => response.transaction_id == connectRequest.transaction_id,
                new Action(() => Send(connectRequest))
            );

            UdpScrapeRequestPacket scrapeRequest = UdpRequset;
            scrapeRequest.connection_id = connectResponse.connection_id;
            scrapeRequest.transaction_id = random.Next();

            Send(scrapeRequest);
            UdpScrapeResponsePacket scrapeResponse = Receive<UdpScrapeResponsePacket>(
                response => response.transaction_id == scrapeRequest.transaction_id,
                new Action(() => Send(scrapeRequest))
                );

            UdpResponse = scrapeResponse;

            return responseFactory.CreateResponse(ref scrapeRequest, ref scrapeResponse);
        }