3. 把Visual Studio .Net的當前窗口切換到【Form1.cs】,進入Form1.cs文件的編輯界面。在Form1.cs頭部,用下列代碼替換系統缺省的導入命名空間代碼:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Net.Sockets ;
using System.Net ;
4. 用下列代碼替換Form1.cs中的button1的Click時間對應的處理代碼,下列代碼的功能是掃描給定的IP地址區間,並把掃描結果顯示出來。
private void button1_Click ( object sender , System.EventArgs e )
{
listBox1.Items.Clear ( ) ;
//清楚掃描結果顯示區域
DateTime StartTime = DateTime.Now ;
//獲取當前時間
string mask = numericUpDown1.Value.ToString ( ) + "." + numericUpDown2.Value.ToString ( ) +
"." + numericUpDown3.Value.ToString ( ) + "." ;
int Min = ( int ) numericUpDown4.Value ;
int Max = ( int ) numericUpDown5.Value ;
if ( Min > Max )
{
MessageBox.Show ( "輸入的IP地址區間不合法,請檢查!" , "錯誤!" ) ;
return ;
}
//判斷輸入的IP地址區間是否合法
progressBar1.Minimum = Min ;
progressBar1.Maximum = Max ;
int i ;
for ( i = Min ; i <= Max ; i++ )
{
string ip= mask + i.ToString ( ) ;
IPAddress myIP = IPAddress.Parse ( ip ) ;
//根據給定的IP地址字符串,處境IPAddress實例
try
{
IPHostEntry myHost = Dns.GetHostByAddress ( myIP ) ;
string HostName = myHost.HostName.ToString ( ) ;
listBox1.Items.Add ( ip + "名稱為:" + HostName ) ;
}
catch
{
listBox1.Items.Add ( ip + "主機沒有響應!" ) ;
}
progressBar1.Value = i ;
}
//掃描給定IP地址對應的計算機是否在線
DateTime EndTime = DateTime.Now ;
TimeSpan ts = EndTime-StartTime ;
//獲得掃描網絡計算機所使用的時間
label4.Text = ts.Seconds.ToString ( ) + "秒" ;
MessageBox.Show ( "成功完成檢測!" , "提示" ) ;
progressBar1.Value = Min ;
}
由於上述代碼比較簡單,並且在代碼中的注釋也比較詳細,這裡就不加以解釋了,但請注意上面代碼中對時間日期類型數據的處理方法。因為有很多人曾經向我訊問過類似問題。
5. 至此,不基於多線程的【掃描網絡計算機】項目的全部工作就完成了,程序的執行是很機械的,其方法是對每一個IP按照順序進行DNS解析,並得到解析結果,所以程序的執行時間和掃描的IP地址區間段大小成正比。圖02是此程序運行後,掃描"10.138.198.1"至"10.138.198.10"這個IP地址區間計算機後的運行界面。整個程序的運行時間為43秒:
圖02:不基於多線程的【掃描網絡計算機】項目的運行界面