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

利用Delphi 2005編寫C#應用程序(3)

編輯:Delphi

說明:

(1)其中using System ,表示使用System庫,就像用Delphi 寫.Net程序中開頭的

uses
System . Drawing , System . Collections , System . ComponentModel ,
System . Windows . Forms , System . Data ;

功能是一樣的。

(2)namespace Project1中的namespace 關鍵字表示一個名空間。

(3)class Class 表示建立一個名字為Class的類。

(4)static void Main ( string [ ] args )才是程序的入口函數。

3、下面我們建立自己的程序,在程序中我們要實現的功能是:再輸入主機名字時,顯示該主機的ip地址,並顯示相關的信息,如ip地址協議簇,以及ip協議的版本。步驟如下:

(1)為了實現以上功能要在文件開頭添加如下庫的引用。代碼如下:

//添加所要用到的庫文件。
using System . Net ;
using System . Net . Sockets ;
using System . Text . RegularExpressions ;

(2)在static void Main ( string [ ] args ) { }中添加如下代碼:

//定義一個字符串型的變量,用來保存主機的名稱。
string server = null ;
// 定義了一個用戶輸入的規則。
// 用來檢查用戶的輸入。
// 他只允許用戶輸入2 ~ 40個字符長度的字符串。
Regex rex = new Regex ( @ " ^ [ a – z A – Z ] \ w { 1 , 39 } $ " ) ;
if ( args . Length < 1) //如果輸入的字符長度小於1 。
{
 //如果沒有主機名稱被作為程序的參數輸入,
 // 那麼就一當前主機的名稱作為默認的主機.
 server = Dns . GetHostName ( ) ; //使用Dns類的GetHostName方法得到主機名稱,並保存在server變量中。
 Console . WriteLine ( " Using current host : " + server ) ;
 //使用Console類的WriteLine方法,在控制面板中輸出信息。
}
else //如果輸入的字符長度大於1 。
{
 server = args [ 0 ] ; //得到參數中的值,並保存在server變量中。
 if ( ! ( rex . Match ( server ) ) . Success ) //如果輸入的格式不對。
 {
  Console . WriteLine ( " Input string format not allowed . " ) ; //顯示提示信息。
  return ;
 }
 // 設置顯示所用的文字類型。
 System . Text . ASCIIEncoding ASCII = new System . Text . ASCIIEncoding ( ) ;
 // 得到主機相關信息。
 IPHostEntry heserver = Dns . Resolve ( server ) ;
 //列舉主機地址列表
 foreach (IPAddress curAdd in heserver . AddressList )
 {
  // 顯示主機所支持的地址協議簇類型.
  // 如果這個主機所支持的地址協議簇類型是IPv6 - enabled ,那麼它的值為: InternNetworkV6 .
  // 如果這個主機所支持的地址協議簇類型也是IPv4 - enabled ,那麼它的值為 InterNetwork.
  Console . WriteLine ( " AddressFamily : " + curAdd . AddressFamily . ToString ( ) ) ;
  // 顯示IPV6 地址中的ScopeId 屬性 .
  if ( curAdd . AddressFamily . ToString ( ) == ProtocolFamily . InterNetworkV6 . ToString ( ) )
Console . WriteLine ( " Scope Id : " + curAdd . ScopeId . ToString ( ) ) ;
   // 使用標准格式顯示主機的IP地址.
   // 如果是IPv4格式將被顯示為點分格式。
   // 如果是IPv6格式將被現實為冒號分割的十六進制方式.
   Console . WriteLine ( " Address : " + curAdd . ToString ( ) ) ;
  // 按字節格式顯示主機的IP地址。
  Console . Write ( " AddressBytes : " ) ;
  Byte[] bytes = curAdd . GetAddressBytes ( ) ;
  for (int i = 0 ; i < bytes . Length ; i + + )
  {
   Console . Write ( bytes [ i ] ) ;
  }
  Console . WriteLine ( " \ r \ n " ) ;
 }
 // 顯示主機是否支持IPv4和IPv6。
 Console . WriteLine ( " \ r \ n SupportsIPv4 : " + Socket . SupportsIPv4 ) ;
 Console . WriteLine ( " SupportsIPv6 : " + Socket . SupportsIPv6 ) ;
 if ( Socket . SupportsIPv6 ) //如果支持IPv6
 {
  // 顯示IPv6種偵聽的地址。
  Console . WriteLine ( " \ r \ n IPv6Any : " + IPAddress . IPv6Any . ToString ( ) ) ;
  // 顯示主機的回送地址.
  Console . WriteLine ( " IPv6Loopback : " + IPAddress . IPv6Loopback . ToString ( ) ) ;
  Console . WriteLine ( " IsLoopback ( IPv6Loopback ) : " + IPAddress . IsLoopback ( IPAddress . IPv6Loopback ) ) ;
 }
 //顯示IPv4主機的回送地址。
 Console . WriteLine ( " IsLoopback ( Loopback ) : " + IPAddress . IsLoopback ( IPAddress . Loopback ) ) ;
 //輸入任意鍵程序繼續
 Console . Read ( ) ;
}

顯示結果如下圖所示:

4、體會:

總體感覺,Delphi 2005 中的提供了多種語言編寫程序的平台,但C#編譯的速度還比較快,不想再C++ Builder中的兩種語言所產生的編譯速度超慢的現象。可見,Borland工程師對於編譯速度還是用心了,不過就是在啟動時,因為載入的東西太多,啟動速度讓人著急。

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