Click here to Skip to main content
Click here to Skip to main content

CDNS 1.0 - An MFC DNS class

, 22 May 2005
Rate this:
Please Sign up or sign in to vote.
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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

.rich.w
CEO
United States United States
No Biography provided

Comments and Discussions

 
Generaldns lookup PinmemberDave_Nunes16-Jan-06 7:29 
GeneralVery good Pinmemberfoobar4724-May-05 21:25 
GeneralDNS Records PinmemberAnatoly24-May-05 11:58 
GeneralRe: DNS Records PinmemberThatsAlok24-May-05 20:12 
GeneralTo those who vote 1 without reading or looking at the article or code Pinmember.rich.w22-May-05 10:33 
GeneralRe: To those who vote 1 without reading or looking at the article or code PinmemberStlan22-May-05 21:23 
I have not voted 1 but I think that people who did it were desapointed by the briefness of your article. As a suggestion, perhaps could you give more details about your implementation of CDNS::DoDNSLookup; how it works and what does it perform (steps, call to WSAStartup, WSADATA structure, etc.) Cool | :cool:
GeneralRe: To those who vote 1 without reading or looking at the article or code PinmemberThatsAlok22-May-05 22:28 
GeneralRe: To those who vote 1 without reading or looking at the article or code Pinmember.rich.w23-May-05 4:02 
GeneralRe: To those who vote 1 without reading or looking at the article or code PinmemberThatsAlok23-May-05 17:40 
GeneralRe: To those who vote 1 without reading or looking at the article or code Pinmember.rich.w24-May-05 4:08 
GeneralRe: To those who vote 1 without reading or looking at the article or code PinmemberGeert van Horrik2-Jun-05 23:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140721.1 | Last Updated 22 May 2005
Article Copyright 2005 by .rich.w
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid