Class WireReader
Methods to read DNS wire formatted data items.
Inherited Members
Namespace: Makaretu.Dns
Assembly: Makaretu.Dns.dll
Syntax
public class WireReader
Constructors
| Improve this Doc View SourceWireReader(Stream)
Creates a new instance of the WireReader on the specified Stream.
Declaration
public WireReader(Stream stream)
Parameters
| Type | Name | Description |
|---|---|---|
| Stream | stream | The source for data items. |
Fields
| Improve this Doc View SourcePosition
The reader relative position within the stream.
Declaration
public int Position
Field Value
| Type | Description |
|---|---|
| Int32 |
Methods
| Improve this Doc View SourceReadBitmap()
Reads a bitmap.
Declaration
public List<ushort> ReadBitmap()
Returns
| Type | Description |
|---|---|
| List<UInt16> | The sequence of values encoded by the bitmap. |
Remarks
https://tools.ietf.org/html/rfc3845#section-2.1.2 for the encoding details.
ReadByte()
Read a byte.
Declaration
public byte ReadByte()
Returns
| Type | Description |
|---|---|
| Byte | The next byte in the stream. |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadByteLengthPrefixedBytes()
Read the bytes with a byte length prefix.
Declaration
public byte[] ReadByteLengthPrefixedBytes()
Returns
| Type | Description |
|---|---|
| Byte[] | The next N bytes. |
ReadBytes(Int32)
Read the specified number of bytes.
Declaration
public byte[] ReadBytes(int length)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | length | The number of bytes to read. |
Returns
| Type | Description |
|---|---|
| Byte[] | The next |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadDateTime32()
Read a DateTime that is represented in seconds (32 bits) from the Unix epoch.
Declaration
public DateTime ReadDateTime32()
Returns
| Type | Description |
|---|---|
| DateTime |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadDateTime48()
Read a DateTime that is represented in seconds (48 bits) from the Unix epoch.
Declaration
public DateTime ReadDateTime48()
Returns
| Type | Description |
|---|---|
| DateTime |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadDomainName()
Read a domain name.
Declaration
public DomainName ReadDomainName()
Returns
| Type | Description |
|---|---|
| DomainName | The domain name. |
Remarks
A domain name is represented as a sequence of labels, where each label consists of a length octet followed by that number of octets. The domain name terminates with the zero length octet for the null label of the root.
note
Compressed domain names are also supported.
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
| InvalidDataException | Only ASCII characters are allowed. |
ReadIPAddress(Int32)
Read an Internet address.
Declaration
public IPAddress ReadIPAddress(int length = 4)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | length |
Returns
| Type | Description |
|---|---|
| IPAddress | An IPAddress. |
Remarks
Use a length of 4 to read an IPv4 address and
16 to read an IPv6 address.
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadString()
Read a string.
Declaration
public string ReadString()
Returns
| Type | Description |
|---|---|
| String | The string. |
Remarks
Strings are encoded with a length prefixed byte. All strings are ASCII.
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
| InvalidDataException | Only ASCII characters are allowed. |
ReadTimeSpan16()
Read a time span (interval) with 16-bits.
Declaration
public TimeSpan ReadTimeSpan16()
Returns
| Type | Description |
|---|---|
| TimeSpan | A TimeSpan with second resolution. |
Remarks
The interval is represented as the number of seconds in two bytes.
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadTimeSpan32()
Read a time span (interval) with 32-bits.
Declaration
public TimeSpan ReadTimeSpan32()
Returns
| Type | Description |
|---|---|
| TimeSpan | A TimeSpan with second resolution. |
Remarks
The interval is represented as the number of seconds in four bytes.
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadUInt16()
Read an unsigned short.
Declaration
public ushort ReadUInt16()
Returns
| Type | Description |
|---|---|
| UInt16 | The two byte little-endian value as an unsigned short. |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadUInt16LengthPrefixedBytes()
Read the bytes with an uint16 length prefix.
Declaration
public byte[] ReadUInt16LengthPrefixedBytes()
Returns
| Type | Description |
|---|---|
| Byte[] | The next N bytes. |
ReadUInt32()
Read an unsigned int.
Declaration
public uint ReadUInt32()
Returns
| Type | Description |
|---|---|
| UInt32 | The four byte little-endian value as an unsigned int. |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |
ReadUInt48()
Read an unsigned long from 48 bits.
Declaration
public ulong ReadUInt48()
Returns
| Type | Description |
|---|---|
| UInt64 | The six byte little-endian value as an unsigned long. |
Exceptions
| Type | Condition |
|---|---|
| EndOfStreamException | When no more data is available. |