lg107142982 2008-7-4 22:25
asp.net实现网段扫描
1.[font=宋体]先介绍一下使用的类:[/font]
DNS[font=宋体]类:在[/font].net[font=宋体]中的[/font]System.net[font=宋体]命名空间下,主要的功能是从[/font] Internet [font=宋体]域名系统[/font] (DNS) [font=宋体]检索关于特定主机的信息。[/font]
IPHostEntry[font=宋体]类:将一个域名系统[/font] (DNS) [font=宋体]主机与一组别名和一组匹配的[/font] IP [font=宋体]地址关联,和[/font]DNS[font=宋体]类一起使用。[/font]
IPAddress [font=宋体]类:[/font]IP [font=宋体]网络上的地址。[/font]
[font=宋体]使用的命名空间有:[/font]
System.Net [font=宋体]命名空间为当前网络上使用的多种协议提供了简单的编程接口[/font].
System.IO[font=宋体]命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。[/font]
System.Thread [font=宋体]命名空间主要是用来多线程序编程。[/font]
[font=宋体]程序实现以下几个功能:[/font]
2.[font=宋体]获取本地主机[/font]IP[font=宋体]地址[/font]
//[font=宋体]对[/font]Button[font=宋体]控件的事件的响应[/font]
private void buttion1_click(object sender,System.Event.Args e)
{
IPHostEntry myHost = new IPHostEntry();
Try
{
// Dns.GetHostName()[font=宋体]获取本地计算机的主机名[/font]
// Dns.GetHostByName()[font=宋体]获取指定[/font] DNS [font=宋体]主机名的[/font] DNS [font=宋体]信息[/font]
//[font=宋体]得到本地主机的[/font]DNS[font=宋体]信息[/font]
myHost = Dns.GetHostByName(Dns.GetHostName());
//[font=宋体]显示本地主机名[/font]
textBox1.Text = myHost.HostName.ToString();
//[font=宋体]显示本地主机的[/font]IP[font=宋体]地址表[/font]
for(int i=0; i<myHost.AddressList.length;i++)
{
richTextBox1.AppendText([font=宋体]“本地主机[/font]IP[font=宋体]地址[/font]->[font=宋体]”[/font]+myHost.AddressList.ToString()+[font=宋体]”[/font]\r[font=宋体]”[/font]);
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}//private
3.[font=宋体]远程查询[/font]
private void buttion2_click(object Sender,System.EventArgs e)
{
IPHostEntry myDnsToIP = new IPHostEntry();
//Dns.Resolve [font=宋体]方法[/font]: [font=宋体]将[/font] DNS [font=宋体]主机名或以点分隔的四部分表示法格式的[/font] // IP [font=宋体]地址解析为[/font] IPHostEntry[font=宋体]实例[/font]
myDnsToIP =Dns.Resolve(textBox2.Text.ToString());
//[font=宋体]显示此域名的[/font]IP[font=宋体]地址的列表[/font]
for(int i=0;i<myDnsToIPAddressList.Length;i++)
{
rich.TextBox1.AppendText(textBox2.Text+[font=宋体]”的[/font]IP[font=宋体]地址是”[/font]+myDnsToIP.AddressList.ToString()+[font=宋体]”[/font]\r[font=宋体]”[/font]);
}
}
4.[font=宋体]实现网段的扫描[/font]
[font=宋体]实现网段的扫描,确定网络中正在使用的主机数目。这里使用了多线程技术,增加了一个线程,为了防止程序扫描的时间过长,影响程序的响应。不过在[/font].net[font=宋体]中由于使用了垃圾收集技术所以对线程的控制也不是很复杂的。[/font]
private void button3_click(object sender, System.EventArgs e)
{
//Thread [font=宋体]类[/font]: [font=宋体]创建并控制线程[/font]
Thread thScan = new thread(new ThreadStrart(ScanTarget));
//Thread.Start [font=宋体]方法[/font]:[font=宋体]启动线程[/font]
thScan.Strart();
}
private void ScanTarget()
{
//[font=宋体]构造[/font]IP[font=宋体]地址的[/font]31-8BIT [font=宋体]位,也就是固定的[/font]IP[font=宋体]地址的前段[/font]
// numericUpDown1[font=宋体]是定义的[/font]System.Windows.Forms.NumericUpDown[font=宋体]控件[/font]
string strIPAddress=numericUpDown1.Text+”.”+numericUpDown2.Text+”.”+numericUpDown3.Text+”.”;
//[font=宋体]开始扫描地址[/font]
int nStrat = Int32.Parse(numericUpDown4.Text);
//[font=宋体]终止扫描地址[/font]
int nEnd =Int32.Parse(numericUpDown5.Text);
//[font=宋体]扫描的操作[/font]
for(int i=nStrat;i<=nEnd;i++)
{
string strScanIPAdd = strIPAddress +i.ToString();
//[font=宋体]转换成[/font]IP[font=宋体]地址[/font]
IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
try
{
//[font=宋体]你可以加入自已的[/font],[font=宋体]增强功能[/font]
// Dns.GetHostByAddress [font=宋体]方法[/font]: [font=宋体]根据[/font] IP [font=宋体]地[/font]
//[font=宋体]址获取[/font] DNS [font=宋体]主机信息。[/font]
IPHostEntry myScanHost =
Dns.GetHostByAddress(myScanIP);
//[font=宋体]获取主机的名[/font]
string strHostName =myScanHost.HostName.ToString();
richTextBox1.AppendText(strScanIPAdd+”->”+strHostName+”\r”);
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}//for
}//private
lg107142982 2008-7-4 22:25
:_001
efgh396 2008-7-20 20:57
人身保险
*** 作者被禁止或删除 内容自动屏蔽 ***