2008/06/19

C# DNS nslookup 컴포넌트

http://www.codeproject.com/KB/IP/dnslookupdotnet.aspx

명령행에서, 보통 사용하는 nslookup 을 사용자 프로그래밍에서 가능하게 하는 공개 컴포넌트 입니다. - 필요한곳에 잘 써먹음...^^ -

물론 이런 컴포넌트가 아닌, nslookup.exe 의 쉘을 받아서 구현이 가능하겠지만,. 구조적이지 않다는 점이 있겠지요..^^

사용법은, 참조에서 Bdev.Net.Dns.dll 를 참조하고, 다음 예제와 같은 코드를 또는 해당 메쏘드를 기반으로 하는 추가 코드를 구현하면 됩니다.


IPAddress dnsServerAddress = IPAddress.Parse("168.126.63.1");

MXRecord[] records = Resolver.MXLookup("wssplex.net",  dnsServerAddress);

foreach (MXRecord record in records)
{
    Console.WriteLine("{0}, preference {1}", record.HostName, record.Preference);
}

특정 쿼리 타입 메쏘드 또는 공용 메쏘드에서 특정 쿼리 타입을 지정 해주거나...

IPAddress dnsServerAddress = IPAddress.Parse("168.126.63.1");

Request request = new Request();
request.AddQuestion(new Question("wssplex.net", DnsType.MX, DnsClass.IN));

Response response = Resolver.Lookup(request, dnsServerAddress);

foreach (Answer answer in Answers)
{
    MXRecord record = (MXRecord)answer.Record;
    Console.WriteLine("{0}, preference {1}", record.HostName, record.Preference);
}


그리고, 같이 배포되는 데모 프로젝트의 소스를 보면, 좀더 응용이 가능합니다. 한가지 버그?? 라면,. 도메인을 정규편식으로 체크하는 Question 클래스의 아래 정규편식 입니다.

!Regex.IsMatch(domain, @"^[a-z|A-Z|0-9|-|_]{1,63}(\.[a-z|A-Z|0-9|-|_]{1,63})+$")

보통의 도메인은 맞긴 하나,. "-" 가 들어간 도메인은 매칭이 되지 않는 정규편식 입니다. 물론 소스코드 까지 배포가 되므로,. 직접 수정후 빌드해서 참조하면 되겠습니다.^^;

댓글 없음:

댓글 쓰기

가장 많이 본 글