- C#網絡程序開發(第二版)
- 何波 傅由甲
- 1136字
- 2020-06-30 17:14:23
2.3 C#.NET網絡程序開發基本類
C#.NET的命名空間System.Net為Internet上使用的多種協議提供了便利的編程接口。開發人員利用這個命名空間提供的類編寫符合標準網絡協議的網絡應用程序時,不需要考慮所用協議的具體細節,就能很快實現所需功能。
2.3.1 IPAddress類
IPAddress類提供了主機的IP地址及相關信息,包括IP回環地址Loopback、IP廣播地址Broadcast以及對IPv6協議的支持。
IPAddress類的默認構造函數如下:
public IPAddress(long address)
這個構造函數的參數取一個長值,并把它轉換成IP地址。
表2-1列舉了IPAddress類的常用公共方法。
表2-1 IPAddress類的常用公共方法

注:*IP地址標準表示法對于IPv4使用點分十進制表示,對于IPv6使用冒號十六進制表示。
上面方法中常用Parse()方法創建IPAddress實例,語法如下:
public static IPAddress Parse(string ipString)
而將IP地址轉換成標準表示法的ToString()方法的語法如下:
public override string ToString()
2.3.2 IPHostEntry類
IPHostEntry類將域名系統(DNS)主機名和別名與匹配的IP地址關聯。它提供主機的IP地址(借助IPAddress類)、主機名及別名,其主要公共屬性如表2-2所示。
表2-2 IPHostEntry類的屬性

2.3.3 IPEndPoint類
IPEndPoint類將網絡端點表示為IP地址和端口號,其對象表示指定IP地址和端口號的組合,進而形成到主機的連接點。有兩個構造函數:
public IPEndPoint(long IPAddress,int port); public IPEndPoint(IPAddress address,int port);
這個類包含3個屬性,如表2-3所示。
表2-3 IPEndPoint類屬性

2.3.4 Dns類
Dns類是一個靜態類,提供一系列靜態方法來獲取本地或遠程域名,最常用的有以下幾種。
(1)GetHostName():獲取本地系統的主機名。用法如下:
string hostname=DNS.GetHostName();
(2)GetHostByName():獲取指定DNS主機名的主機信息。用法如下:
IPHostEntry ipHost=GetHostByName("www.cqut.edu.cn");
(3)GetHostByAddress():通過IP地址獲取指定主機名的主機信息。用法如下:
IPHostEntry GetHostByAddress(IPAddress address); IPHostEntry GetHostByAddress(string address);
(4)Resole():接收主機格式或IP地址格式的任一種地址格式,返回IPHostEntry對象的DNS信息。
【例2-1】 編程實現獲取并顯示本機的IP地址、主機名信息。演示IPEndPoint類的方法及屬性使用。

程序運行結果如圖2-9所示。

圖2-9 IPandPorts程序運行結果
2.3.5 Ping及相關類
Windows操作系統提供了Ping.exe的命令行程序,大家經常用它來測試網絡連接情況,以及確定本地主機能否與遠程主機收發數據。與此對應,C#的命名空間System.Net.NetworkInformation提供了與Ping有關的Ping、PingOptions和PingReply類。
Ping類可以檢測遠程計算機,它通過向目標主機發送一個回送請求數據包,要求目標主機收到請求后答復,從而判斷網絡響應時間和本機與目標主機是否連通。Ping類提供同步和異步兩種方式發送數據,提供的Send()方法以同步方式向目標發送請求,并返回一個PingReply實例;若是異步,則使用SendAsync方法。具體使用方法見MSDN文檔。
PingOptions類提供Ttl和DontFragment屬性控制Ping數據包的傳輸。Ttl屬性為Ping數據包指定生存時間,表示在丟棄Ping數據包前可以轉發此數據包的路由節點數,默認值為128。DontFragment屬性控制Ping類數據包是否分片,如果為true則不能分片。不能分片的情況下如果發送數據包超過MTU,則發送失敗。
Ping類的Send方法將返回一個PingReply類對象,用于獲得目的主機及其網絡信息。PingReply類的常用屬性如表2-4所示。
表2-4 PingReply類常用屬性

【例2-2】 編程實現用Ping、PingOptions和PingReply類測試目標主機是否可以到達。

程序運行結果如圖2-10所示。

圖2-10 PingHost程序運行結果