private void ReadDNSString(byte[] buffer, ref int offset, out string value) { value = ""; while (buffer[offset] != 0) { int len = buffer[offset]; string o; if (len >= 192) { byte[] addrB; DataLib.ReadByteArray(buffer, ref offset, 2, out addrB); addrB[0] &= unchecked ((byte)~0xC0); UInt16 addr; int tmp = 0; NetLib.ReadUInt16(addrB, ref tmp, out addr); tmp = addr; ReadDNSString(buffer, ref tmp, out o); value += o + "."; offset -= 1; break; } else { offset += 1; NetLib.ReadCString(buffer, ref offset, len, out o); } offset -= 1; value += o + "."; } value = value.Substring(0, value.Length - 1); offset += 1; }