Ejemplo n.º 1
0
        private IPAddress[] GetDnsRecords(string hostName, IPAddress dnsServer)
        {
            IntPtr           ptr  = default(IntPtr);
            List <IPAddress> list = new List <IPAddress>();
            IntPtr           zero = IntPtr.Zero;
            IPv4Array        iPv4ArrayFromIPAddress = GetIPv4ArrayFromIPAddress(dnsServer);

            if (DnsQueryA(hostName, 1, 72, ref iPv4ArrayFromIPAddress, ref ptr, ref zero) == 0)
            {
                DnsRecordA dnsRecordA        = (DnsRecordA)Marshal.PtrToStructure(ptr, typeof(DnsRecordA));
                IPAddress  addressFromRecord = GetAddressFromRecord(dnsRecordA);
                if (addressFromRecord != IPAddress.None)
                {
                    list.Add(addressFromRecord);
                }
                while (!(dnsRecordA.NextRecord == IntPtr.Zero))
                {
                    dnsRecordA        = (DnsRecordA)Marshal.PtrToStructure(dnsRecordA.NextRecord, typeof(DnsRecordA));
                    addressFromRecord = GetAddressFromRecord(dnsRecordA);
                    if (addressFromRecord != IPAddress.None)
                    {
                        list.Add(addressFromRecord);
                    }
                }
            }
            return(list.ToArray());
        }
Ejemplo n.º 2
0
        private IPv4Array GetIPv4ArrayFromIPAddress(IPAddress address)
        {
            IPv4Array result = default(IPv4Array);

            if (address != null)
            {
                result.Count     = 1;
                result.Addresses = new uint[1]
                {
                    BitConverter.ToUInt32(address.GetAddressBytes(), 0)
                };
            }
            return(result);
        }
Ejemplo n.º 3
0
 private static extern int DnsQueryA(string hostName, short type, int options, ref IPv4Array dnsServers, ref IntPtr recordList, ref IntPtr reserved);