C# 实现网段扫描

WinForm中使用MaskedTextBox制作IP地址输入框 1.实现的功能:输入IP地址,形如000.000.000.000的格式,并设置keydown事件,当输入点(.)的时候,自动跳至下一栏。从工具箱中拖入一个MaskedTextBox,命名为MaskedTextBox_IP。3.在PromptChar属性中,将_换为空格,如果你喜欢_的话,也可以不用换。2.在Mask属性中,输入:000.000.000.000。 阅读详情
摘要  



想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.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);  

}  

}  

}  
SAP PPDS启发式排产实战:从零配置到自定义规则开发(附ABAP代码示例) 本文详细介绍了SAP PPDS启发式排产的实战应用,从基础配置到自定义规则开发的全流程。通过ABAP代码示例,展示了如何实现多目标优化、实时响应约束可视化,帮助企业提升订单交付率、减少设备闲置时间。文章还包含开发环境准备、标准模板解析、自定义开发步骤及性能优化技巧,适合制造业数字化转型的实践参考。 阅读详情

相关推荐

ICESat-2数据下载及处理分析随笔

ICESat-2全称是Ice,Cloud and land Elevation Satellite -2。看名字我们能知道它的任务是测ice,cloudland elevation,而且这是一个Satellite,是一颗卫星。那么这里我们就要分清ICESat-2ATLAS的关系,ICESat-2是星载平台,是一个space observatory,ATLAS是这个星载平台上搭载的单光子激光雷达系统。

u011322358的博客 1万+

c# textbox只能输入ip_你了解C#的协变逆变吗

C# 4.0开始,泛型接口泛型委托都支持协变逆变,由于历史原因,数组也支持协变。里氏替换原则:任何基类可以出现的地方,子类一定可以出现。协变(out)协变:即自然的变化,遵循里氏替换原则,表现在代码上则是任何基类都可以被其子类赋值,如Animal = Dog、Animal = Cat使用out关键字声明(注意方法中修饰参数的out含义不同)被标记的参数类型只能作为方法的返回值(包括只读属性...

weixin_39942335的博客 197

C#实现网段扫描(附完整源码)

C#实现网段扫描(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 450

winform之ip地址控件textBox

C# winform 显示编辑ip地址,无需重绘textBox或者重写textBox方法,只需要在原生textBox控件对应事件中实现对应的算法即可。 1、textBox keyUp事件 private void textBoxKeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Back) return; String text = textBoxIP.Text; string[] sub.

Eric 3657

C# 获取公网ip地址

1  通过HttpWebRequest获取网页数据 public static string HttpGet(string url, string encoding) { string result = string.Empty; try { Encoding...

qq_25744257的博客 7031

C# 获取本地的内网(局域网)外网(公网)IP地址的方法

1、获取本机的IP地址集合: /// <summary> /// 获取本机所有ip地址 /// </summary> /// <param name="netType">"InterNetwork":ipv4地址,"InterNetworkV6":ipv6地址</param> ...

willingtolove的博客 5353

C#实现网段扫描

C#实现网段扫描摘要 想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.NET战略方案,C#是主推语言,你们是否有兴趣用C#实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。  -------------------------------------------------------------------------------- 目录 1.使

零点烛光的专栏 958

ISO15118-3-2015 电动汽车与充电设施通信

ISO15118-3-2015 电动汽车与充电设施通信

上一篇: 利用XSLT把ADO记录集转换成XML
下一篇: 使用 XPath 通过 MSXML 执行不区分大小写的搜索
slightboy
博客等级 码龄23年 3粉丝 18原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值