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