private void SendAddressResponse(Packet p, IPEndPoint ep) { var packet = new Packet(); packet.TransactionID = p.TransactionID; packet.Flags.IsResponse = true; packet.Flags.IsAuthoritative = true; var ip4Address = GetIP4Address(); var ip6Address = GetIP6Address(); var a = AAnswer.Build(fullName, ip4Address, (UInt16)120, true, 1); var aaaa = AAAAAnswer.Build(fullName, ip6Address, (UInt16)120, true, 1); if (a != null) { packet.Answers.Add(a); } if (aaaa != null) { packet.Answers.Add(aaaa); } if (ep != null) { _service.SendPacket(p, ep); } else { _service.SendPacket(packet); } }
void RequestAddress(string name) { Packet packet = null; AddToPacket(ref packet, name, 1); AddToPacket(ref packet, name, 28); _service.SendPacket(packet); }
void SendPacket(bool isMultiCast) { if (_waiting || _stopped) { _timerRunning = false; return; } //Create Packet var packet = new Packet(); packet.Flags.IsResponse = false; packet.Queries.Add(new Query() { IsMulticast = isMultiCast, Record = new Record() { Class = 1, Name = _proto, RecordType = 12, }, }); //Send it try { _service.SendPacket(packet); } catch (SocketException ex) { //Likely temporary disconnect, try again next time } finally { //Setup next request _timerRunning = true; _timer.FireNext(delays[nextDelayIndex]); AdvanceDelay(); } }