C#中實現網段掃描的代碼

來源:互聯網
上載者:User

摘要
想必大家對小榕時光等掃描器都非常熟悉了,有沒有自己寫一個的衝動。最近微軟推實施了.NET戰略方案,C#是主推語言,你們是否有興趣用C#來實現對區域網路IP地址的掃描,嘗試一下自己寫的快樂,那麼請跟我來。
本文
1.先介紹一下使用的類:
DNS類:在.net中的System.net命名空間下,主要的功能是從 網際網路網域名稱系統 (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#實現掃描器的主要功能就完成了,試一下你可以看到你的網路上的主機,有沒有成就感了:)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.