TCP協議是互聯網中最重要的協議之一,幾乎所有網絡服務都是基於TCP協議的。TCP協議最主要的特點是:
1.基于連接的協議
2.保証數據包准確到達。
3.保証各數據包到達的順序與數據包發出的順序相同。
4.傳輸的數據無消息邊界
使用TCP協議開發套接字應用程序的方法有兩種:同步套接字和異步套接字。
同步套接字:
在通用Socket進行連接、接收、發送操作時,客房機和服務器會暫停當前工作,處於等待狀態,即一直等到有數據時才繼續執行下面的語句。一般在阻塞方式下使用這種方式。可見,同步套接字適用於網絡傳輸量不太大的處理。當網絡傳輸量很大時時間的等待可能會讓用戶無法忍受
異步套接字
在通用Socket進行連接、接收、發送操作時,客房機和服務器不會暫停當前工作,而是利用callback機制進行連接、接收、發送處理。異步套接字適用於需要在網絡上進行大量數據傳輸的應用程序,比如有幾客戶同時傳輸的情況。
使用同步套接字進行編程相對比較簡單,而異步套接字則比較復雜。真正理解了同步套接字的編程思路以後,再理解異步套接字就不會感到太困難了。
定議與獲取主機信息
要讓本地主機和其祂主機進行通信,必須提供本地主機的IP地址和端口號。可以用System.Net名稱空間中的IPEndPoint類表示IP地址和端口的組合。其構造函數常用形式為:
public IPEndPoint(IPAddress address,int port)
在System.Net名稱空間中有一個Dns類,提供了所有需要的DNS功能,可以利用該類得到所需要的本地或遠程主機信息。在同瞳操作中,Dns類提供了4種靜態方法:
1.Dns.GetHosName():返回一個字符串類型的本地主機名,如:string strHostName=Dns.GetHostName();
2.Dns.GetHostByName(string strhostname)
根據提供的本地或遠程主機名返回一個IPHosetEntry對象,該對象有3個屬性:
AddresssList IPAddress 對象的數組,數組的每個元素對應一個IP地址。
Aliases 字符串對象的數組,數組中每個元素對應一個別名。
HostName 字符串對象,表示主機名。
例如:IPHostEntry localaddress=Dns.GetHostByName(Dns.GetHostName());
3.Dns.GetHostByAddress(addrss)
根據提供的本地或遠程IP地址返回一個IPHostEntry對象。這個方法有二種重載形式:
IPHostEntry GetHostByAddress(IPAddress address)
IPHostEntry GetHostByAddress(string address)
4.Dns.Resolve()
有時候,IP地址或主機名是根據用戶輸入得到的,可是編程時並不知道將來用戶在使用時會按昭哪種形式輸入,可能是IP地址也可能是主機名。這進可用Dns.Resolve()方法得到IPHostEntry對象。