C#实现网段扫描
想必大家对小榕时光等扫描器都非常熟悉了,有没有自己写一个的冲动。最近微软推实施了.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#实现扫描器的主要功能就完成了,试一下你可以看到你的网络上的主机,有没有成就感了:)
相关文章:

sbt配置nexus仓库
2019独角兽企业重金招聘Python工程师标准>>> 最近学习Scala,不可避免的要用到sbt。爱折腾的我把原本比较简单的事情搞的复杂了,来来回回搞了好久,记录下来,有同样爱折腾的盆友可以参考下。 sbt在windows下如果是默认安…

C#编程(十二)----------函数
类和结构 类和结构实际上都是创建对象的模板 ,每 个对象都包含数据 ,并 提供了处理和访问数据的方法。 类定义了类的每个对象 (称 为实例 )可 以包含什么数据和功能 。 例如 ,如 果 一 个类表示 一 个顾客 ,就可以定义字段 CustomerID、 FirstName、 LastNane和 Address,以 包含…

Linux很实用的命令查找软件安装目录
#whereis php #which php #php -v 查看版本号 差异自己去体会

Python 库突发 PyPI 危机!
整理 | 梦依丹出品 | CSDN(ID:CSDNnews)据 BleepingComputer 报道,Python 官方软件包存储库 PyPI 遭受了黑客攻击,攻击者通过注入垃圾邮件包的形式发起了洪水攻击。这些垃圾邮件及软件包用电影、电视节目名称命名&…

scala入门之代码补全
为什么80%的码农都做不了架构师?>>> 在scala的shell命令行中,我们可以使用像Linux那样的代码补全功能。Linux中是使用Tab键补全,scala的shell命令行也是使用这个键。例如,我们在“ssss”这个字符串上调用toUpperCase方…

pycharm第一个Python程序
print ("Hello word!"); 这是Python3.xx的语法!

C#枚举系统安装的所有打印机
在下面的程序中我们将把系统中所安装的打印机用列表框列出来,同时为默认打印机设置缺省值。 在下面的程序中我们用到了两个主要的类,把所有的打印机列表出来用到了PrinterSettings 类,获取系统默认打印机用到了PrintDocument 类,下面我们就动…

编译安装linux内核步骤
编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-x.y.z的子目录。该目录…

遏制企业数据泄露之殇,大咖切磋云安全的攻防之道
整理 | 寇雪芹出品 | AI 科技大本营(ID:rgznai100)5 月 7 日,美国最大燃油管道、东部地区油气输送主动脉 Colonial Pipeline 计算机系统被黑客入侵和勒索,导致美国17个州和华盛顿特区进入紧急状态。这次黑客入侵无异于一记重拳&am…

【NOIP2016】愤怒的小鸟
Description Kiana最近沉迷于一款神奇的游戏无法自拔。 简单来说,这款游戏是在一个平面上进行的。 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y ax^2 bx的曲线,其中a, b是…

“智能”基石:人工智能数据标注与训练,是决定智能时代的第一步
记者 | 邓晓娟 2021年5月20日~23日,由深圳市科学技术协会、深圳市商务局、深圳市福田区人民政府共同指导,深圳市科技开发交流中心、深圳市人工智能行业协会联合主办的2021第二届深圳国际人工智能展开幕式暨智能制造创新高峰论坛在深圳会展中心࿰…

C#中对POP3邮件解码
Base64和下面将要介绍的Quoted-Printable都属于MIME (多部分( multi-part)、多媒体电子邮件和 WWW 超文本的 一种编码标准,用于传送诸如图形、声音和传真等非文本数 据)。MIME定义在RFC1341中。 Base64是现今在互联网上应用最多的一种编码…

php 命中算法
function hitted($rate,&$num){if (is_string($rate))$rate ( float ) $rate;if ($rate > 1)throw new ArgumentException(传入的概率值 $rate 必须是 0~1 之间的浮点数或整数(0|1)。, -1);$r 100 * $rate;$v mt_rand(1, 100);$num $v;if ($v < $r)return true;r…

iframe 数据传递
1.使用iframe是父页面与子页面的数据传递2.使用iframe 跳转部分研究处理ios兼容性 2.1 safai 会阻止iframe里的window.open()函数 采用了讲需要跳转的页面传向父页面,让父页面进行处理跳转 //子页面向父页面传递信息 parent.postMessage({变量名: 数据}, *);//子页面…

C#调用控制面板选项
因为C#是由Microsoft公司推出的,所以它对Microsoft的所有产品的兼容性与相互操作性是其它公司开发出的编程语言所不及的。Microsoft开发的Windows操作系统与C#之间的关系也非常紧密。从而实现了C#对Windows的无缝操作。 下面,我们就以“C#对Windows控制面…

2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?
5月27日20点,第 13 期「大咖来了」! CSDN 副总裁于邦旭、融云 CTO 任杰、即构科技副总裁刘莉,多方视角探讨 RTC 超级风口与机遇,还有众多精美礼品等你拿! 立即戳:https://live.csdn.net/room/csdnnews/cn…

查询/新建/修改本地用户和组
通过ADSI新建用户user2: 1 #创建新用户,创建完成后的新用户不隶属于任何组2 $computerName$env:computername3 #定义用户名、密码、描述信息4 $username"user2"5 $userpass"password"6 $userdesc"description"7 $ADSI [A…

支付宝接入参考博客
http://www.cnblogs.com/stulzq/p/7606164.html转载于:https://www.cnblogs.com/baiqian/p/7609443.html

活动目录的优势
活动目录的优势 Active Directory服务提供了单一登入的能力和一个所有基础设施相关信息的集中储存机制,大幅度的简化了使用者和计算机的管理,同时提供优越的网络资源存取能力。我在本文中主要讲述一下Microsoft Windows Server 2003 中的 Active Directo…

C#编写一个抓网页的应用程序
本文利用C#和.NET提供的类来轻松创建一个抓取网页内容源代码的程序。HTTP是WWW进行数据访问最基本的协议之一,在.NET的基本类型库类中提供了两个对象类:HTTPWebRequest和HTTPWebResponse,分别用来向某资源发送请求和获得响应。为了得到一个资…

从粗放到精细,如何用AI技术实现信息流广告投放的降本增效
中国的SaaS在经历2020年全球爆发的疫情之后,迎来了前所未有的高光时刻,或者说蛰伏数年终于迎来了爆发。 2021年5月20日,ZTouch,北京中量质子网络信息科技有限公司旗下的企业数智化服务平台,发布了广告数智投放平台Dar…

广义动量定理之作用点的应用分析
广义动量定理之作用点的应用分析 从广义动量定理FαtnmV的角度说,改变作用点,就可以改变成果nmV。作用点派以调整作用点的准确度作为达成目的的手段。 作用点应用于聚焦理论 理论简介:聚焦理论使企业集中力量于某几个细分市场,主攻…

将DBF,XLS,XML,MDB文件导入C#DataGrid的方法
以下的源码里分别给出了将DBF,XLS,XML,MDB文件导入C#DataGrid的方法,供各位参考。 //PutInDataSet.cs的源码 using System; using System.Data.Odbc; using System.Data.OleDb; using System.Data; using System.Collections; namespace PutInDataSet { /// <summary…

超星未来发布新一代高级别自动驾驶车载计算平台
5月25日,由中国汽车工程学会、国家智能网联汽车创新中心主办的第八届国际智能网联汽车技术年会(以下称“CICV 2021”)在北京亦创国际会展中心举办。超星未来联合创始人、首席技术官梁爽博士应邀出席发表演讲,并在主论坛上发布了超…

Effective Java - Item 1: Consider static factory methods instead of constructors
考虑使用静态工厂方法来替代构造方法, 这样的做的好处有四点. 1. 更好的表意 有的构造方法实际上有特殊的含义, 使用静态工厂方法能更好的表达出他的意思. 例如 BigInteger(int, int, Random) , 它返回一个可能是素数的 BigInteger. 使用工厂方法 BigInteger.probablePrime 可以…

服务器和普通用户电脑的区别
服务器和普通用户电脑的区别 1、硬件方面 经常收到戴尔的广告邮件,看到里面的服务器配置不怎么高,可是价格都很贵。想知道,服务器和普通电脑的区别在哪里呢? 目前使用服务器的站长和企业也比较多,也许有人会觉得二者差…

C#:消息队列应用程序
文章“MSMQ:可伸缩、高可用性的负载平衡解决方案(英文)”介绍了一种解决方案,用于高可用性消息队列 (MSMQ) 的可伸缩负载平衡解决方案体系结构。此解决方案中涉及了一种将 Windows 服务用作智能消息路由器的开发方案。这样的解决方…

从腾讯实时音视频发家史,看爆发中的 RTC 将何去何从
作者 | 夕颜头图 | 下载于视觉中国出品 | AI 科技大本营(ID:rgznai100)早在2015年左右,直播和短视频的兴起渗透进普通人的日常生活,人们信息消费的内容已经开始从文字向语音、视频信息转变。而疫情期间全民“家里蹲”的窘境&#…

山寨c 标准库中的getline 函数
2019独角兽企业重金招聘Python工程师标准>>> 要山寨一个函数,只要看两点 原版函数的形参。原函数的返回值。下面是函数原型。 ssize_t getline(char **lineptr, size_t *n, FILE *stream); 函数返回值。 RETURN VALUE On success, getline() and getde…

封ip对爬虫的影响
今天要聊的是封ip对爬虫的影响。我认为封ip能拒绝一部分网络请求,减轻服务器的压力,但是如果要是建立一个好的ip池,封对爬虫的影响不大。 爬取国内一个拍卖公司的网站,刚开始用多进程下载,每分钟能爬取 1000个页面&…