C#使用Dns.GetHostEntry实现域名解析的简单方法

小石头
小石头
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何在C# Windows Forms应用中通过Dns.GetHostEntry方法实现简单的域名解析功能,自动获取目标域名的IP地址列表、主机名及别名,并支持捕获异常以确保程序稳定。

域名解析原理与准备

C#中执行DNS查询主要依赖 System.Net 命名空间提供的 Dns 类。核心方法为 Dns.GetHostEntry,它接收一个主机名(域名或IP),返回 IPHostEntry 对象。该对象包含:

  • HostName:规范主机名。
  • AddressList:对应的IP地址数组。
  • Aliases:主机名别名集合。

操作前需确保项目中已添加对 System.dll 的引用(默认引用),并使用以下关键引用:

using System;
using System.Windows.Forms; // 用于UI操作
using System.Net;          // 用于DNS查询

第1步:初始化Windows Form窗口

创建一个标准的 WinForms 窗体 Form1,并放置以下控件以配合后续逻辑:

  1. 输入框:textBox1,用于输入待解析的域名。
  2. 结果显示框:textBox2,用于显示解析后返回的标准主机名。
  3. IP列表框:listBox1,用于展示解析出的所有IP地址。
  4. 别名列表框:listBox2,用于展示主机的别名。
  5. 触发按钮:buttonDns,点击后开始执行解析。

第2步:编写域名解析业务逻辑

双击“解析”按钮进入 buttonDns_Click 事件处理函数。为确保用户体验,代码结构应包含加载状态指示、核心解析逻辑以及异常捕获。

具体实现代码如下:

private void buttonDns_Click(object sender, EventArgs e)
{
    try
    {
        // 1. 设置鼠标状态,提示用户程序正在运行
        this.Cursor = Cursors.WaitCursor;

        // 2. 获取输入框中的域名并进行解析
        string domain = textBox1.Text.Trim();
        if (string.IsNullOrEmpty(domain))
        {
            MessageBox.Show("请输入域名!");
            return;
        }

        IPHostEntry IPinfo = Dns.GetHostEntry(domain);

        // 3. 清空旧的显示数据
        listBox1.Items.Clear();
        listBox2.Items.Clear();

        // 4. 遍历并显示所有IP地址
        foreach (IPAddress IP in IPinfo.AddressList)
        {
            listBox1.Items.Add(IP.ToString());
        }

        // 5. 遍历并显示主机别名
        foreach (string alias in IPinfo.Aliases)
        {
            listBox2.Items.Add(alias);
        }

        // 6. 显示标准主机名
        textBox2.Text = IPinfo.HostName;
    }
    catch (Exception ex)
    {
        // 7. 若域名不存在或网络错误,弹窗提示
        MessageBox.Show(ex.Message);
    }
    finally
    {
        // 8. 恢复鼠标正常状态
        this.Cursor = Cursors.Default;
    }
}

第3步:处理常见异常情况

在实际使用中,Dns.GetHostEntry 可能会抛出以下异常:

  • DnsResolutionException:输入的字符串不是合法的IP地址,也未解析到任何记录。
  • SocketException:本地DNS服务器无响应。
  • ArgumentNullException:传入的主机名为 null。

上述代码中的 try-catch-finally 块已涵盖基本异常处理,确保即使解析失败也不会导致应用程序崩溃。

完成判断

程序运行无误的特征包括:

  1. 在 textBox1 输入有效域名(如 www.baidu.com)后点击按钮。
  2. mouse 指针变为沙漏形状。
  3. 解析成功后指针恢复正常。
  4. listBox1 中列出了对应域名的IPv4/IPv6地址。
  5. listBox2 中列出该域名的别名(若无则为空)。
  6. textBox2 显示解析后的标准 Canonical Name。

以上就是C#使用Dns.GetHostEntry实现域名解析的详细内容,更多关于C#网络编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。