public byte[] GetBytes() { using (var memoryStream = new MemoryStream()) using (var writer = new DnsWriter(0, memoryStream)) { var dnsNameWriter = new DnsNameWriter(memoryStream); writer.Write(this.MessageId.ToNetworkByteOrder()); writer.Write(((ushort)this.Flags).ToNetworkByteOrder()); writer.Write(this.QueryCount.ToNetworkByteOrder()); writer.Write(((ushort)this.AnswerRecords.Count).ToNetworkByteOrder()); writer.Write(((ushort)this.NameServerRecords.Count).ToNetworkByteOrder()); writer.Write(((ushort)this.AdditionalRecords.Count).ToNetworkByteOrder()); foreach (var resourceRecord in this.AnswerRecords) { resourceRecord.Write(dnsNameWriter, writer); } foreach (var resourceRecord in this.NameServerRecords) { resourceRecord.Write(dnsNameWriter, writer); } foreach (var resourceRecord in this.AdditionalRecords) { resourceRecord.Write(dnsNameWriter, writer); } return memoryStream.ToArray(); } }
internal void Write(DnsNameWriter dnsNameWriter, DnsWriter dnsWriter) { dnsNameWriter.Write(this.Name); dnsWriter.Write(((ushort)this.Type).ToNetworkByteOrder()); dnsWriter.Write(((ushort)this.Class).ToNetworkByteOrder()); dnsWriter.Write(this.TimeToLive.ToNetworkByteOrder()); var data = this.GetData(dnsNameWriter); dnsWriter.Write(((ushort)data.Length).ToNetworkByteOrder()); dnsWriter.Write(data); }
public override byte[] GetData(DnsNameWriter dnsNameWriter) { using (var stream = new MemoryStream()) { foreach (var s in this.strings) { var buffer = Encoding.ASCII.GetBytes(s); stream.WriteByte((byte)buffer.Length); stream.Write(buffer, 0, buffer.Length); } return stream.ToArray(); } }
public abstract byte[] GetData(DnsNameWriter dnsNameWriter);
public override byte[] GetData(DnsNameWriter dnsNameWriter) { return this.ipAddress.GetAddressBytes(); }