摘要
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.NET战略方案,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。
正文
1.先介绍一下使用的类:
DNS类:在.net中的System.net命名空间下,主要的功能是从 Internet 域名系统 (DNS) 检索关于特定主机的信息。
IPHostEntry类:将一个域名系统 (DNS) 主机与一组别名和一组匹配的 IP 地址关联,和DNS类一起使用。
IPAddress 类:IP 网络上的地址。
使用的命名空间有:
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口.
System.IO命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。
System.Thread 命名空间主要是用来多线程序编程。
程序实现以下几个功能:
2.获取本地主机IP地址
/// <summary>
/// 按扭查询本机ip
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
IPHostEntry myHost = new IPHostEntry();
try
{
this.richTextBox1.Text = "";
// 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++)
{
richTextBox1.AppendText("本地主机IP地址->" + myHost.AddressList[i].ToString()+ "\r");
}
}
catch(Exception error)
{
MessageBox.Show(error.Message);
}
}
3.远程查询
private void button2_Click(object sender, System.EventArgs e)
{
this.richTextBox1.Text = "";
IPHostEntry myDnsToIP = new IPHostEntry();
//Dns.Resolve 方法: 将 DNS 主机名或以点分隔的四部分表示法格式的
// IP 地址解析为 IPHostEntry实例
myDnsToIP =Dns.Resolve(textBox2.Text.ToString());
//显示此域名的IP地址的列表
for(int i=0;i<myDnsToIP.AddressList.Length;i++)
{
richTextBox1.AppendText(textBox2.Text + "的IP地址是" + myDnsToIP.AddressList[i].ToString() + "\r");
}
}
4.实现网段的扫描
实现网段的扫描,确定网络中正在使用的主机数目。这里使用了多线程技术,增加了一个线程,为了防止程序扫描的时间过长,影响程序的响应。不过在.net中由于使用了垃圾收集技术所以对线程的控制也不是很复杂的。
private void button3_Click(object sender, System.EventArgs e)
{
this.richTextBox1.Text = "";
//Thread 类: 创建并控制线程
//Thread thScan = new Thread(new ThreadStart(ScanTarget));
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);
//扫描的操作
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)
{
MessageBox.Show(error.Message);
}
}
}
到此为止一个简单用C#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有成就感了:)
分享到:
相关推荐
C#实现网段扫描.docC#实现网段扫描.docC#实现网段扫描.doc
C#实现网段扫描,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。
用C#实现网段扫描练习,使用Visual Studio 2019
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.NET战略方案,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。
C#用Ping实现网段扫描,VS2010下编译通过,含.exe文件
C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验二 多任务网段扫描 关键技术是将任务托管给线程池。代码在数据验证部分写得比较麻烦(本来是想拿数据绑定写的,后来放弃了),主要实现功能部分异常...
C#实验--A.2 多任务网段扫描练习,《C#网络应用编程》课后实验,也是广工C#网络编程实验
利用多线程来扫描网段,根据计算机的IP地址获取其主机域名。
多任务网段扫描练习的小程序,根据电脑的ip地址获取其主机域名
真正能用!!! IE内核可用,其他浏览器内核不行。 启用,IE安全设置中的“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本” 非常难找!!!
C#开发的简易局域网扫描器 可选择工作模式(单线程,多线程,背景线程)并扫描局域网内所有计算机
最近微软推实施了.NET战略方案,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。 正文 1.先介绍一下使用的类: DNS类:在.net中的System.net命名空间下,...
摘要:C#源码,网络相关,网段扫描 运行环境:Visual Studio2010
C#网络应用编程(马俊,第三版)课后上机作业A.2:多任务网段扫描。写的代码个人认为条理还是比较清晰的,代码量也很少,很容易理解;此外此代码主要作用是来理解多线程的并发编程的好材料
编写Windows应用程序,使用多线程技术实现局域网内指定主机IP地址的端口扫描程序,要求满足以下功能: 指定端口号范围,列出指定主机开放的TCP端口号及UDP端口号; 显示各端口号类型;
内部网络扫描程序 实现功能: 1 当前本机的连机状态. 2 计算机名称--->IP; IP--->计算机名称 3 网段扫描
ARP扫描局域网主机ip和MAC(c#)归类.pdf
对用户选择IP地址范围进行验证,若不是合法IP,则会报错。
自动扫描指定网段IP以及指定端口是否可用,软件黑色风格,看上去很酷,是款学**网络扫描不错的资料,程序内的IP计算算法很值得一看。