程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 多線程在Visual C#網絡編程中的應用(3)

多線程在Visual C#網絡編程中的應用(3)

編輯:關於C語言

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:不基於多線程的【掃描網絡計算機】項目的運行界面

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved