C#实现网段扫描
摘要
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.NET 战略方案,
C#是主推语言,你们是否有兴趣用 C#来实现对局域网 IP 地址的扫描,尝试一下自己写的快乐,那么请
跟我来。
目录
1.使用的类
2.获取本地主机 IP 地址
3.远程查询
4.实现网段的扫描
正文
1.先介绍一下使用的类:
DNS 类:在.net 中的 System.net 命名空间下,主要的功能是从 Internet 域名系统 (DNS) 检索关于
特定主机的信息。
IPHostEntry 类:将一个域名系统 (DNS) 主机与一组别名和一组匹配的 IP 地址关联,和 DNS 类一起
使用。
IPAddress 类:IP 网络上的地址。
使用的命名空间有:
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口.
System.IO 命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。
System.Thread 命名空间主要是用来多线程序编程。
程序实现以下几个功能:
2.获取本地主机 IP 地址
//对 Button 控件的事件的响应
private void buttion1_click(object sender,System.Event.Args 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[i].ToString()+”\r”);
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}//private
3.远程查询
private void buttion2_click(object Sender,System.EventArgs e)
{
IPHostEntry myDnsToIP = new IPHostEntry();
//Dns.Resolve 方法: 将 DNS 主机名或以点分隔的四部分表示法格式的 // IP 地址解析为
IPHostEntry 实例
myDnsToIP =Dns.Resolve(textBox2.Text.ToString());
//显示此域名的 IP 地址的列表
for(int i=0;i// 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);
//扫描的操作
for(int i=nStrat;i<=nEnd;i++)
{
string strScanIPAdd = strIPAddress +i.ToString();
//转换成 IP 地址
IPAddress myScanIP = IPAddress.Parse(strScanIPAdd);
try
{
// Dns.GetHostByAddress 方法: 根据 IP 地
//你可以加入自已的,增强功能
//址获取 DNS 主机信息。
IPHostEntry myScanHost =
Dns.GetHostByAddress(myScanIP);
//获取主机的名
string strHostName =myScanHost.HostName.ToString();
richTextBox1.AppendText(strScanIPAdd+”->”+strHostName+”\r”);
}
catch(Exception error)
{
}
}//for
}//private
MessageBox.Show(error.Message);
到此为止一个简单用 C#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有
成就感了:),