65.9K
CodeProject is changing. Read more.
Home

CDNS 1.0 - An MFC DNS class

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.83/5 (20 votes)

May 22, 2005

CPOL
viewsIcon

66140

downloadIcon

1750

An MFC implementation of a DNS class, it can retrieve multiple IPs and hostnames.

Sample Image - CDNS.PNG

Introduction

I needed to use DNS lookups in a little Internet app I was using, and couldn't find a manageable solution. So I created one.

What are DNS lookups and why would you use one?

DNS stands for Domain Name Server/Service. It is the method which all browsers use to resolve hostnames (www.codeproject.com, for example) into IP addresses they can connect to.

How does this code work?

In my class, I have used a few Winsock functions to do the lookups, mainly GetHostByName to fill the hostent structure with information. The basic process is:

  • WSAStartup to initialize.
  • GetHostByName to fill the hostent structure.
  • Check if any information was retrieved.
  • If so, loop through the returned IPs and hostnames and add them to an array.
  • WSACleanup to end the process.

Using the class

The main three functions that will be used are:

  • SetHostname
  • DoDNSLookup
  • GetIPAt

An example of retrieving a hostname's primary IP is:

// Define a CDNS object
CDNS dnsObj;

// Set the hostname
dnsObj.SetHostname("www.google.be");

// Do the DNS lookup
BOOL doLookup = dnsObj.DoDNSLookup;

if (doLookup)
{
    // Retrieve the IP
    CString thisIP = dnsObj.GetIPAt(0);
}

Of course, the class retrieves multiple IPs, so you'll need to do a loop to get them all. Here's an example:

// Define a CDNS object
CDNS dnsObj;

// Set the hostname
dnsObj.SetHostname("www.google.be");

// Do the DNS lookup
BOOL doLookup = dnsObj.DoDNSLookup;

if (doLookup)
{
    for (int i = 0; i <= dnsObj.GetNumberOfIP(); i++)
    {
        CString thisIP = dnsObj.GetIPAt(i);
        // Do something with the IP
    }
}

History

  • 1.0
    • 22nd May, 2005: First public release.