private void button3_Click(object sender, EventArgs e)
        {            //Thread 类: 创建并控制线程
            Thread thScan = new Thread(new ThreadStart(ScanTarget));
            //Thread.Start 方法:启动线程
           thScan.Start();
                   }
    private void ScanTarget()
    {
        //构造IP地址的31-8BIT 位,也就是固定的IP地址的前段
        // numericUpDown1是定义的System.Windows.Forms.NumericUpDown控件
        string strIPAddress=numericUpDown1.Text+"."+numericUpDown2.Text+"."+numericUpDown3.Text+".";
        //开始扫描地址
         int nStrat = Int32.Parse(numericUpDown4.Text);
            //终止扫描地址
         int nEnd = Int32.Parse(numericUpDown5.Text);
//  1
        //扫描的操作
        for(int i=nStrat;i<=nEnd;i++)
        {
            string strScanIPAdd = strIPAddress +i.ToString();
            //转换成IP地址
            IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
             //   2            try
            {
                   //址获取 DNS 主机信息。
                IPHostEntry myScanHost = Dns.GetHostByAddress(myScanIP);
                
                //获取主机的名
                string strHostName = myScanHost.HostName.ToString();
                richTextBox1.AppendText(strScanIPAdd + "  " + strHostName + "\r");
            }
            catch(Exception error)
            {
                MessageBox.Show(error.Message);
            }
        }//for    
    }//private本人揭贴及时,无不良记录,谢谢
 单步看了 在 1 和 2  的地方会报“请求的名称有效,且在数据库中找到,但是没有相关的正确数据”咋回事呢?/?

解决方案 »

  1.   

    numericUpDown 是个什么控件。
      

  2.   

    int nEnd = Int32.Parse(numericUpDown5.Text);
    //  1
     IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
                 //   2单步看了 在 1 和 2  的地方会报“请求的名称有效,且在数据库中找到,但是没有相关的正确数据”咋回事呢?/?
      

  3.   

    ……怎么说 1、2 的地方怎么可能出那个错误?报错的地方好像都比较诡异啊?
    你先改成单线程的试试,在报错的行后面标注。关于那个错误,是因为系统获取主机名出错导致的。也就是说,在调用 Dns.GetHostByAddress(myScanIP); 时系统由于某种原因无法获取主机名,这时如果访问 HostName 属性可能就会导致此错误。我目前没有解决获取主机名的问题,你可以在获取主机名失败时用 IP 代替主机名。详细的看看 Dns 类的相关说明……如果有高手还望赐教。
      

  4.   

    对你说对
    ==========
    什么意思
    如果是1处出错就奇怪了,那个时候还没执行到Dns呢,你这几个numericUpDown是不是设了从1到255呢?
      

  5.   

    这个程序 现在我改好了
    但只能扫描到  同个段里的 IP
    如 我在 3。XXX里  能扫描到  3。XXX里的
    但我要扫描 5。XXX里时 不报错 ,但 计算机名字 不能显示出来 而是IP代的如  同段里的 显示   IP      NAME
    XXX。XXX   TOM而 不同段里  IP      NAMEXXX。XXX  XXX。XXX