雖然天天上博客園欣賞各位“大俠”的傑作,偶然回首,突然發 現自己已成“潛水者”久矣。本來對於自己有限的水平,有點不好意 思在此發貼,不過潛伏久了,才慢慢意識到老是通過浏覽他人的文章雖然能夠提 高自己能力,能夠及時的獲取新技術新思想,但卻只能停留在他人的思想上。通 過學習,加上自己的想法,再寫出來,讓大家來指證錯誤,不僅能夠鞏固自己的 知識,也可以讓一些跟我一樣迷惘的朋友們不用再去走一些彎路,豈不是兩全其 美,本著這樣的想法,打算把自己平時的所學所想都寫下來,歡迎各路朋友批評 指證,因為你的批評和建議能夠讓我更迅速的得到提高。
好了,講了這麼多廢話,也該言歸正傳了。由於工作上需要,最近惡補了一 下socket網絡編程,整理了一下資料,把它放上來,希望能夠對一些朋友有幫助 。
在講Socket編程前,我們先來看一下幾個最常用的類和方法,相信這些東西 能讓你事半功倍。
一、IP地址操作類
1、IPAddress類
a、在該類中有一個Parse()方法,可以把點分的十進制IP表示轉化成 IPAddress類,方法如下:
IPAddress address = IPAddress.Parse(“192.168.0.1”);
b、IPAddress提供4個只讀字段
Any 用於代表本地系統可用的任何IP地址
Broadcase 用於代表本地網絡的IP廣播地址
Loopback 用於代表系統的回送地址
None 用於代表系統上沒有網絡接口
其中IPAddress.Any最常用可以用來表示本機上所有的IP地址,這對於socket 服務進行偵聽時,最方便使用,不用對每個IP進行偵聽了。而 IPAddress.Broadcase可用來UDP的IP廣播,這些具體講socket時再詳細介紹。
2、IPEndPoint類
我們可以通過二種構造方法來創建IPEndPoint類:
a、IPEndPoint(long address, int port)
b、IPEndPoint(IPAddress address, int port)
四個屬性:
Address
AddressFamily
Port
MaxPort
MinPort
這些應該從名字上就很好理解,不再一一介紹。IPEndPoint其實就是一個IP 地址和端口的綁定,可以代表一個服務,用來Socket通訊。
二、DNS相關類
DNS類有四個靜態方法,來獲取主機DNS相關信息,
1、GetHostName()
通過Dns.GetHostName()可以獲得本地計算機的主機名
2、GetHostByName()
根據主機名稱,返回一個IPHostEntry 對象:
IPHostEntry GetHostByName(string hostName)
其中IPHostEntry把一個DNS主機名與一個別名和IP地址的數組相關聯,包含 三個屬性:
AddressList:一個IPAddress對象的數組
Aliases:一個字符串對象數組
HostName:一個用於主機名的字符串對象
3、GetHostByAddress()
類似於GetHostByName(),只不過這裡的參數是IP地址,而不是主機名,也返 回一個IPHostEntry對象。
IPHostEntry GetHostByAddress(IPAddress address)
IPHostEntry GetHostByAddress(string address)
4、Resolve()
當我們不知道輸入的遠程主機的地址是哪種格式時(主機名或IP地址),用 以上的二種方法來實現,我們可能還要通過判斷客戶輸入的格式,才能正確使用 ,但Dns類提供一更簡單的方法Resolve(),該方法可以接受或者是主機名格式或 者是IP地址格式的任何一種地址,並返回IPHostEntry對象。
常用方法就寫到這裡了,當然針對網絡編程不可能只有這麼幾個類和方法, 只不過這幾個我們最常用,也非常的簡單。不過因為本人比較懶惰,沒有放一些 具體的實例上去,請見諒