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 的地方会报“请求的名称有效,且在数据库中找到,但是没有相关的正确数据”咋回事呢?/?
{ //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
IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
// 2单步看了 在 1 和 2 的地方会报“请求的名称有效,且在数据库中找到,但是没有相关的正确数据”咋回事呢?/?
你先改成单线程的试试,在报错的行后面标注。关于那个错误,是因为系统获取主机名出错导致的。也就是说,在调用 Dns.GetHostByAddress(myScanIP); 时系统由于某种原因无法获取主机名,这时如果访问 HostName 属性可能就会导致此错误。我目前没有解决获取主机名的问题,你可以在获取主机名失败时用 IP 代替主机名。详细的看看 Dns 类的相关说明……如果有高手还望赐教。
==========
什么意思
如果是1处出错就奇怪了,那个时候还没执行到Dns呢,你这几个numericUpDown是不是设了从1到255呢?
但只能扫描到 同个段里的 IP
如 我在 3。XXX里 能扫描到 3。XXX里的
但我要扫描 5。XXX里时 不报错 ,但 计算机名字 不能显示出来 而是IP代的如 同段里的 显示 IP NAME
XXX。XXX TOM而 不同段里 IP NAMEXXX。XXX XXX。XXX