65.9K
CodeProject 正在变化。 阅读更多。
Home

CDNS 1.0 - 一个 MFC DNS 类

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.83/5 (20投票s)

2005 年 5 月 22 日

CPOL
viewsIcon

66912

downloadIcon

1750

一个 MFC 实现的 DNS 类,它可以检索多个 IP 地址和主机名。

Sample Image - CDNS.PNG

引言

我需要在我的一个小型的互联网应用中使用 DNS 查找,但找不到一个易于管理的解决方案。所以我自己创建了一个。

什么是 DNS 查找,为什么要使用它?

DNS 代表域名服务器/服务。它是所有浏览器用来将主机名(例如 www.codeproject.com)解析为它们可以连接到的 IP 地址的方法。

这段代码是如何工作的?

在我的类中,我使用了几个 Winsock 函数来执行查找,主要是 GetHostByName 来填充 hostent 结构,其中包含信息。基本过程是

  • WSAStartup 来初始化。
  • GetHostByName 来填充 hostent 结构。
  • 检查是否检索到任何信息。
  • 如果是,则循环遍历返回的 IP 地址和主机名,并将它们添加到数组中。
  • WSACleanup 来结束进程。

使用该类

主要使用的三个函数是

  • SetHostname
  • DoDNSLookup
  • GetIPAt

检索主机名的主要 IP 的一个例子是

// 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);
}

当然,该类检索多个 IP 地址,因此您需要进行循环才能获取所有地址。这是一个例子

// 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
    }
}

历史

  • 1.0
    • 2005 年 5 月 22 日:首次公开发布。
© . All rights reserved.