DnDns.Query.DnsQueryRequest.ResolveTcp C# (CSharp) Méthode

ResolveTcp() private static méthode

private static ResolveTcp ( byte bDnsQuery, IPEndPoint ipep ) : byte[]
bDnsQuery byte
ipep System.Net.IPEndPoint
Résultat byte[]
        private static byte[] ResolveTcp(byte[] bDnsQuery, IPEndPoint ipep)
        {
            TcpClient tcpClient = new TcpClient();
            byte[] recvBytes = null;

            try
            {
                tcpClient.Connect(ipep);

                NetworkStream netStream = tcpClient.GetStream();
                BinaryReader netReader = new System.IO.BinaryReader(netStream);

                netStream.Write(bDnsQuery, 0, bDnsQuery.Length);

                // wait until data is avail
                while (!netStream.DataAvailable) ;

                if (tcpClient.Connected && netStream.DataAvailable)
                {
                    // Read first two bytes to find out the length of the response
                    byte[] bLen = new byte[2];
                    
                    // NOTE: The order of the next two lines matter. Do not reorder
                    // Array indexes are also intentionally reversed
                    bLen[1] = (byte)netStream.ReadByte();
                    bLen[0] = (byte)netStream.ReadByte();

                    UInt16 length = BitConverter.ToUInt16(bLen, 0);

                    recvBytes = new byte[length];
                    netStream.Read(recvBytes, 0, length);
                }
            }
            finally
            {
                tcpClient.Close();
            }
            return recvBytes;
        }