Exemplo n.º 1
0
        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;
        }