完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
C#实现网段扫描
C#实现网段扫描 times New="New" Roman'; mso-ascii-font-family: 'Times New="New" Roman'">摘要 想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.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 { richTextBox1.AppendText(“本地主机IP地址->”+myHost.AddressList.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 { rich.TextBox1.AppendText(textBox2.Text+”的IP地址是”+myDnsToIP.AddressList.ToString()+”r”); } } 4.实现网段的扫描 实现网段的扫描,确定网络中正在使用的主机数目。这里使用了多线程技术,增加了一个线程,为了防止程序扫描的时间过长,影响程序的响应。不过在.net中由于使用了垃圾收集技术所以对线程的控制也不是很复杂的。 private void button3_click(object sender, System.EventArgs e) { //Thread 类: 创建并控制线程 Thread thScan = new thread(new ThreadStrart(ScanTarget)); //Thread.Start 方法:启动线程 thScan.Strart(); } 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); } }//for }//private 到此为止一个简单用C#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有成就感了:) |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
12090 浏览 2 评论
4434 浏览 3 评论
3661 浏览 5 评论
9310 浏览 47 评论
4415 浏览 9 评论
647浏览 0评论
441浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-15 18:26 , Processed in 0.522248 second(s), Total 45, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号