zoukankan      html  css  js  c++  java
  • DNS类<=>IP地址的提取与查询

    using System.Net; //命名空间为当前网络上使用的多种协议提供了简单的编程接口.
    using System.IO;  //命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。
    using  System.Threading; //命名空间主要是用来多线程序编程。

     // DNS类:在.net中的System.net命名空间下,主要的功能是从 Internet 域名系统 (DNS) 检索关于特定主机的信息。
     // IPHostEntry类:将一个域名系统 (DNS) 主机与一组别名和一组匹配的 IP 地址关联,和DNS类一起使用。
     // IPAddress 类:IP 网络上的地址。

    主要功能点:

     /// <summary>
      /// 获取本地主机IP地址
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void btnLocalIp_Click(object sender, System.EventArgs e)
      {
       IPHostEntry  myHost=new IPHostEntry();
       try
       {
        // Dns.GetHostName();   获取本地计算机的主机名
        // Dns.GetHostByName(); 获取指定DNS主机名的DNS信息
        //得到本地主机的DNS信息
        myHost=Dns.GetHostByName(Dns.GetHostName());
        //显示本地主机名
        textBox1.Text=myHost.HostName.ToString();
        //显示本地主机的IP地址列表
        for(int i=0;i<myHost.AddressList.Length;i++)
        {
         this.richTextBox1.AppendText("本地主机IP地址->"+myHost.AddressList[i].ToString()+"\r");

        }
       }
       catch(Exception err)
       {
        MessageBox.Show(err.Message);
       }
      
      }

      /// <summary>
      /// 远程查询
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void btnRemote_Click(object sender, System.EventArgs e)
      {
       
       try
       {
        IPHostEntry myDnsToIp=new IPHostEntry();
        // Dns.Resolve 方法: 将 DNS 主机名(以点分隔的四部分表示法格式的)或 IP 地址解析为 IPHostEntry实例
        myDnsToIp=Dns.Resolve(textBox2.Text.ToString());
        for(int i=0;i<myDnsToIp.AddressList.Length;i++)
        {
         this.richTextBox1.AppendText(textBox2.Text+"的 IP地址是 :"+myDnsToIp.AddressList[i].ToString()+"\r");
        }
       }
       catch(Exception err)
       {
        MessageBox.Show(err.Message,"远程查询");
       }
      }

      /// <summary>
      /// 实现网段的扫描,确定网络中正在使用的主机数目。这里使用了多线程技术,
      /// 增加了一个线程,为了防止程序扫描的时间过长,影响程序的响应。
      /// 不过在.net中由于使用了垃圾收集技术所以对线程的控制也不是很复杂的。
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void btnScan_Click(object sender, System.EventArgs e)
      {
       //Thread 类:创建并控制线程
       Thread  thScan=new Thread(new ThreadStart(ScanTarget));
       //Thread.Start()方法 启动线程
       thScan.Start();

      }
      private void  ScanTarget()
      {
      // this.btnScan.Enabled = false;

       //构造IP地址的31-8bit位,也就是固定的IP地址的前段
       //numericUpdown1是定义的System.Windows.Forms.numericUpDown控件
       string strIPAddress=numericUpDown1.Value+"."+numericUpDown2.Value+"."+numericUpDown3.Value;
       // MessageBox.Show(strIPAddress);
       //开始扫描地址
       int nStart=Int32.Parse(numericUpDown4.Value.ToString());
       //终止扫描地址
       int nEnd=Int32.Parse(this.numericUpDown5.Value.ToString());
       //扫描的操作
       for(int i=nStart;i<=nEnd;i++)
       {
        string strScanIPAdd=strIPAddress+"."+i.ToString();
        //转换成IP地址  将 IP 地址字符串转换为 IPAddress 实例。
        IPAddress myScanIP=IPAddress.Parse(strScanIPAdd);
        try
        {
         //你可以加入自己的,增强功能
         //Dns.GetHostByAddress方法 根据IP地址获取Dns主机信息
         IPHostEntry  myScanHost=Dns.GetHostByAddress(myScanIP);
         //获取主机名
         string strHostName=myScanHost.HostName.ToString();
         this.richTextBox1.AppendText(strScanIPAdd+"->"+strHostName+"\r");

        }
        catch(Exception err)
        {
         MessageBox.Show(err.Message,"网段扫描");
        }
       }
       //this.btnScan.Enabled=true;
       
      }
    }
    }

  • 相关阅读:
    CentOS挂载NTFS移动硬盘
    【算法与数据结构】动态规划
    【算法与数据结构】图的最小生成树 MST
    【C语言工具】AddressSanitizer
    【算法与数据结构】二叉堆和优先队列 Priority Queue
    【算法与数据结构】三种简单排序
    【算法与数据结构】并查集 Disjoint Set
    【算法与数据结构】二叉堆和堆排序
    【Linux 应用编程】进程管理
    【Linux 应用编程】进程管理
  • 原文地址:https://www.cnblogs.com/flashicp/p/691335.html
Copyright © 2011-2022 走看看