日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C#实现网段扫描

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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#實現掃描器的主要功能就完成了,試一下你可以看到你的網絡上的主機,有沒有成就感了:)??

總結

以上是生活随笔為你收集整理的C#实现网段扫描的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。