程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#網絡編程概述(1)

C#網絡編程概述(1)

編輯:C#入門知識

微軟下一代互聯網開發工具VS.Net已於三月份在全國范圍推出,其中的一門新興語言C#正被越來越多的開發者所接受並運用。
  C#作為一門集眾家之長的語言,在各個方面尤其是網絡編程方面有著很大的優勢。本文就向大家介紹一下用C#進行網絡編程的一些基本知識和方法。

  微軟的.Net框架為我們進行網絡編程提供了以下兩個名字空間:System.Net以及System.Net.Sockets。通過合理運用其中的類和方法,我們可以很容易地編寫出各種網絡應用程序。這種網絡應用程序既可以是基於流套接字的,也可以是基於數據報套接字的。而基於流套接字的通訊中采用最廣泛的協議就是TCP協議,基於數據報套接字的通訊中采用最廣泛的自然就是UDP協議了。

  下面我重點向大家介紹C#網絡編程中的一些類:Dns類、IPHostEntry類、IPEndPoint類以及Socket類,最後我會給出相應的實例以加深讀者的理解。

Dns 類:

  向使用 TCP/IP Internet 服務的應用程序提供域名服務。其Resolve()方法查詢DNS服務器以將用戶友好的域名(如"www.google.com")映射到數字形式的 Internet 地址(如 192.168.1.1)。Resolve()方法返回一個IPHostEnty實例,該實例包含所請求名稱的地址和別名的列表。大多數情況下,可以使用 AddressList 數組中返回的第一個地址。

Resolve()方法的函數原型如下:

public static IPHostEntry Resolve(string hostName);

下面的代碼獲取一個 IPAddress 實例,該實例包含服務器 www.google.com 的IP地址:

IPHostEntry ipHostInfo = Dns.Resolve("www.google.com");

IPAddress ipAddress = ipHostInfo.AddressList[0];

不過在Dns類中,除了通過Resolve()方法,你還可以通過GetHostByAddress()方法以及GetHostByName()方法來得到相應的IPHostEntry實例,函數原型如下:

public static IPHostEntry GetHostByAddress(string IPAddress);

public static IPHostEntry GetHostByName(string hostName);

下面的代碼顯示了如何分別運用以上兩種方法獲得包含服務器www.google.com的相關信息的IPHostEntry實例:

IPHostEntry hostInfo=Dns.GetHostByAddress(“192.168.1.1”);

IPHostEntry hostInfo=Dns.GetHostByName("www.google.com");

在使用以上方法時,你將可能需要處理以下幾種異常:

SocketException異常:訪問Socket時操作系統發生錯誤引發

ArgumentNullException異常:參數為空引用引發

ObjectDisposedException異常:Socket已經關閉引發

以上,我向大家簡要地介紹了Dns類中一些方法以及其用法,並列舉出了可能出現的異常,下面就讓我們轉到和Dns類密切相關的IPHostEntry類。


 

IPHostEntry類:

該類的實例對象中包含了Internet主機的地址相關信息。此類型的所有公共靜態成員對多線程操作而言都是安全的,但不保證任何實例成員是線程安全的。其中主要的一些屬性有:AddressList屬性、Aliases屬性以及HostName屬性。

AddressList屬性和Aliases屬性的作用分別是獲取或設置與主機關聯的IP地址列表以及獲取或設置與主機關聯的別名列表。其中AddressList屬性值是一個IPAddress類型的數組,包含解析為Aliases屬性中包含的主機名的IP地址;Aliases屬性值是一組字符串,包含解析為AddressList 屬性中的IP地址的DNS名。而HostName屬性比較好理解,它包含了服務器的主要主機名,這光從名稱上就可以知道了。如果服務器的DNS項定義了附加別名,則可在Aliases屬性中使用這些別名。

下面的代碼列出了服務器www.google.com的相關別名列表以及IP地址列表的長度並將所有的IP地址列出:

IPHostEntry IPHost = Dns.Resolve("www.google.com/");

string[] aliases = IPHost.Aliases;

Console.WriteLine(aliases.Length);


IPAddress[] addr = IPHost.AddressList;

Console.WriteLine(addr.Length);

for(int i= 0; i < addr.Length ; i++)

{

Console.WriteLine(addr[i]);

}

介紹完IPHostEntry類,我們能獲得了所要連接的主機的相關IP地址以及別名列表,但是真正要和主機取得連接還需要一個很重要的類-IPEndPoint類。

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