명령행에서, 보통 사용하는 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);
}
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);
}
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})+$")
보통의 도메인은 맞긴 하나,. "-" 가 들어간 도메인은 매칭이 되지 않는 정규편식 입니다. 물론 소스코드 까지 배포가 되므로,. 직접 수정후 빌드해서 참조하면 되겠습니다.^^;
댓글 없음:
댓글 쓰기