• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中实现网段扫描的代码

C#中实现网段扫描的代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了如何实现跨网段访问,跨网段实现dhcp,不同网段如何实现互访,网段,ip地址网段查询等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
摘要 
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.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#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有成就感了:)   </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中实现网段扫描的代码

相关文章

  • 2017-05-28C# SQlite操作方法小结
  • 2017-05-28C#实现移除字符串末尾指定字符的方法
  • 2017-05-28C#通过重写Panel改变边框颜色与宽度的方法
  • 2017-05-28C#中使用@声明变量示例(逐字标识符)
  • 2017-05-28C#中数组、ArrayList和List三者的区别详解
  • 2017-05-28c#基数排序Radix sort的实现方法
  • 2017-05-28C# 拓展方法的简单实例
  • 2017-05-28C#读取csv格式文件的方法
  • 2017-05-28C# 开发step步骤条控件详解
  • 2017-05-28c#使用filesystemwatcher实时监控文件目录的添加和删除

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#几种排序算法
    • VS中模仿WPF模板创建最简单的WPF程序
    • C#预处理器指令的用法实例分析
    • C#实现SMTP邮件发送程序实例
    • C#实现关闭其他程序窗口或进程代码分享
    • C#版Windows服务安装卸载小工具
    • C#中加载dll并调用其函数的实现方法
    • Devexpress treelist 简介
    • c#可空类型的作用说明
    • c#.net 常用函数和方法集

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有