вторник, 5 марта 2013 г.

VB.NET: query DNS SRV records (получить SRV-записи из DNS)

С простыми записями типа A и PTR все понятно, тут  System.NET. Однако, если надо получить из DNS что-то более нестандартное, типа MX или, как в моем случае, SRV, то задача чуть менее тривиальная:



1. Берем прекрасную библиотеку отсюда http://dndns.codeplex.com/
2. Используя документацию с этого же сайта, пишем код. В моем случае он такой:


Imports DnDns.Enums
Imports DnDns.Query
Imports DnDns.Records
Imports System.Net

Module Module1

    Sub Main()
        'Dim dnsServer As String = GetDnsAddress()

        Dim request As New DnsQueryRequest()
        Dim response As DnsQueryResponse = request.Resolve("_ldap._tcp.syd-cenet.ceo.syd.catholic.edu.au", NsType.SRV, NsClass.INET, Sockets.ProtocolType.Tcp)

        'Console.WriteLine("Bytes received: " + response.BytesReceived)

        ' Enumerate the Answer Records
        Console.WriteLine("Answers:")
        For Each record As IDnsRecord In response.Answers
            If TypeOf record Is SrvRecord Then
                Dim srvRec As SrvRecord = DirectCast(record, SrvRecord)
                Console.WriteLine(srvRec.HostName)
                Console.WriteLine(srvRec.Port)
            End If
        Next
    End Sub
End Module

Комментариев нет: