




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
工業(yè)和信息化部“十二五”規(guī)劃教材
普通高等學(xué)校“十二五”規(guī)劃教材
《C#網(wǎng)絡(luò)應(yīng)用編程》第3版
第1章網(wǎng)絡(luò)應(yīng)用編程基本知識(shí)2Ch1C#代碼編寫基礎(chǔ)1.1安裝VS2012開發(fā)環(huán)境1.2網(wǎng)絡(luò)應(yīng)用編程模型1.3TCP/IP網(wǎng)絡(luò)協(xié)議1.4IP地址轉(zhuǎn)換與域名解析1.5網(wǎng)卡信息檢測與網(wǎng)絡(luò)流量檢測1.1安裝VS2012開發(fā)環(huán)境1.操作系統(tǒng)要求調(diào)試本書源程序的操作系統(tǒng)和內(nèi)存要求如下。(1)操作系統(tǒng):Windows7(32位或64位),建議使用64位Windows7。(2)內(nèi)存:至少2GB。2.安裝VS2012和VS2012Update4本書源程序都在VS2012簡體中文旗艦版開發(fā)環(huán)境下調(diào)試通過。安裝VS2012后,還需要繼續(xù)安裝VS2012Update4;從微軟的網(wǎng)站上下載VS2012Update4后直接安裝即可;Update4已經(jīng)包含了Update1、Update2和Update3,因此不需要安裝Update4之前的這些補(bǔ)丁。1.2網(wǎng)絡(luò)應(yīng)用編程模型1.2.1互聯(lián)網(wǎng)與企業(yè)內(nèi)部網(wǎng)1.2.2分散式、集中式和分布式1.2.3C/S模式1.2.4B/S模式1.2.5網(wǎng)絡(luò)應(yīng)用程序編程模型1.2.1互聯(lián)網(wǎng)與企業(yè)內(nèi)部網(wǎng)“網(wǎng)絡(luò)”有兩個(gè)含義:一個(gè)是互聯(lián)網(wǎng),另一個(gè)是企業(yè)內(nèi)部網(wǎng)。本課程主要介紹C/S模式的網(wǎng)絡(luò)應(yīng)用編程;B/S編程可參考十二五規(guī)劃教材《HTML5與ASP.NET程序設(shè)計(jì)教程》(馬駿主編,人民郵電出版社出版)1.互聯(lián)網(wǎng)(Internet)互聯(lián)網(wǎng)(Internet)是一種覆蓋全世界的全球性互聯(lián)的網(wǎng)絡(luò)。2.企業(yè)內(nèi)部網(wǎng)(Intranet)企業(yè)內(nèi)部網(wǎng)(Intranet)是互聯(lián)網(wǎng)的另一種體現(xiàn)形式。將企業(yè)內(nèi)部的網(wǎng)絡(luò)和企業(yè)外部的網(wǎng)絡(luò)通過防火墻有效隔離,每個(gè)Intranet都變成了一個(gè)相對獨(dú)立的網(wǎng)絡(luò)環(huán)境。1.互聯(lián)網(wǎng)(Internet)互聯(lián)網(wǎng)(Internet)是一種覆蓋全世界的全球性互聯(lián)的網(wǎng)絡(luò)。互聯(lián)網(wǎng)的最大特點(diǎn)相互連接的網(wǎng)絡(luò)都使用同一組通用的協(xié)議(TCP/IP協(xié)議簇),從而形成邏輯上的單一巨大國際網(wǎng)絡(luò)?;ヂ?lián)網(wǎng)的特點(diǎn)支持資源共享、采用分布式控制技術(shù)、采用分組交換技術(shù)、使用通信控制處理機(jī)、采用分層的網(wǎng)絡(luò)通信協(xié)議?;ヂ?lián)網(wǎng)并不等同萬維網(wǎng)(WorldWideWeb),它只是互聯(lián)網(wǎng)所提供的服務(wù)的其中一部分萬維網(wǎng)是一種使用超文本傳輸協(xié)議相互鏈接而成的全球性系統(tǒng)。2.企業(yè)內(nèi)部網(wǎng)(Intranet)企業(yè)內(nèi)部網(wǎng)(Intranet)是互聯(lián)網(wǎng)的另一種體現(xiàn)形式。每個(gè)Intranet都變成了一個(gè)相對獨(dú)立的網(wǎng)絡(luò)環(huán)境。這種網(wǎng)絡(luò)采用的仍然是Internet標(biāo)準(zhǔn);它將企業(yè)內(nèi)部的網(wǎng)絡(luò)和企業(yè)外部的網(wǎng)絡(luò)通過防火墻有效隔離。例如,某家公司的多個(gè)分公司分布在不同的國家,總公司與分公司之間以及分公司與分公司之間建立Intranet后,公司內(nèi)部的應(yīng)用程序仍然通過Internet快速交互。但是,由于防火墻的作用,公司外部的用戶則無法訪問它,外部用戶只能訪問公司對外公開的內(nèi)容。1.2.2分散式、集中式和分布式早期計(jì)算機(jī)網(wǎng)絡(luò)的數(shù)據(jù)通信模型分散式(Decentralized)集中式(Centralized)分布式(Distributed)分散式、集中式和分布式的例子:一座大樓的房間制暖問題分散式:每個(gè)房間自己決定制暖設(shè)備的配備,各房間的自主性大,但大樓管理員無法統(tǒng)一控制用電量;集中式:整座大樓配備中央空調(diào),所有房間的溫度由大樓管理員來負(fù)責(zé),這種方式管理方便,但辦公室卻沒有了自主調(diào)溫能力;分布式:整座大樓配備中央空調(diào),每個(gè)房間安裝溫度控制器,管理員能通過中央空調(diào)統(tǒng)一控制,各房間也可根據(jù)情況調(diào)節(jié)溫度。數(shù)據(jù)通信模型(一)——分散式分散式系統(tǒng)用戶只負(fù)責(zé)管理自己的計(jì)算機(jī)系統(tǒng),各自獨(dú)立的系統(tǒng)之間沒有資源或信息的交換或共享。缺點(diǎn)存在大量共享數(shù)據(jù)的重復(fù)存儲(chǔ);容易導(dǎo)致一個(gè)企業(yè)組織內(nèi)各部門數(shù)據(jù)的不一致性;會(huì)造成硬件、支持和運(yùn)營維護(hù)等成本的大量增加。早已經(jīng)被淘汰。數(shù)據(jù)通信模型(二)——集中式集中式系統(tǒng)一臺(tái)計(jì)算機(jī)(稱為主機(jī))保存一個(gè)企業(yè)組織的全部數(shù)據(jù),而用戶則通過多個(gè)終端連接到這臺(tái)主機(jī)。終端本身并不具備處理信息的能力。優(yōu)點(diǎn)所有運(yùn)作和管理都由一臺(tái)主機(jī)來控制,硬件成本低;資源集中、數(shù)據(jù)共享,減小或消除了數(shù)據(jù)的冗余與不一致性。缺點(diǎn)可靠性問題,一旦主機(jī)出現(xiàn)故障,系統(tǒng)就全部癱瘓;多個(gè)用戶訪問時(shí),系統(tǒng)響應(yīng)慢,不能充分滿足不同部門或用戶的需要,也無法滿足某些部門的特殊需求。數(shù)據(jù)通信模型(三)——分布式系統(tǒng)分布式系統(tǒng)是分散式系統(tǒng)和集中式系統(tǒng)的混合體;將分散在網(wǎng)絡(luò)環(huán)境中的各種資源以一個(gè)整體的形式呈現(xiàn)給用戶,以全局方式管理系統(tǒng)資源;根據(jù)用戶需要?jiǎng)討B(tài)分配任務(wù),為用戶任意調(diào)度網(wǎng)絡(luò)資源;在這個(gè)過程中,用戶的操作體驗(yàn)就像是正在使用單機(jī)工作一樣。調(diào)度過程對用戶來說是“透明”的。分布式系統(tǒng)與計(jì)算機(jī)網(wǎng)絡(luò)的主要區(qū)別是軟件而不是硬件。例如:用戶打開并編輯一個(gè)文件在分布式系統(tǒng)中,系統(tǒng)自動(dòng)調(diào)度文件,用戶并不知道該文件到底保存在網(wǎng)絡(luò)中的哪臺(tái)計(jì)算機(jī)上在計(jì)算機(jī)網(wǎng)絡(luò)中,用戶必須先知道保存該文件的遠(yuǎn)程主機(jī),然后與該遠(yuǎn)程主機(jī)連接,再傳送該文件到本機(jī),才能進(jìn)行編輯。1.2.3C/S模式C/S(Client/Server)也叫C/S模式、C/S架構(gòu)或C/S模型它是在分布式的基礎(chǔ)上進(jìn)一步抽象出來的編程模型。1.C/S模式及其特點(diǎn)胖客戶端應(yīng)用程序編程架構(gòu),
其主要工作都在客戶端運(yùn)行;例如QQ、飛信、360安全衛(wèi)士等客戶端軟件。2.C/S應(yīng)用程序編程模型面向服務(wù)的體系架構(gòu)(SOA),WCF是其中一種具體實(shí)現(xiàn)技術(shù)。編寫服務(wù)端應(yīng)用程序建議使用WCF;編寫客戶端應(yīng)用程序建議使用WPF應(yīng)用程序。3.C/S網(wǎng)絡(luò)編程建議的做法C/S模式及其特點(diǎn)C/S將一個(gè)網(wǎng)絡(luò)事務(wù)處理分為兩部分客戶端(Client,也叫客戶機(jī))用于為用戶提供操作,同時(shí)向網(wǎng)絡(luò)提供請求服務(wù)的接口;服務(wù)端(Server)負(fù)責(zé)接收并處理客戶端發(fā)出的服務(wù)請求,并將服務(wù)處理結(jié)果返回給客戶端。C/S既適用于實(shí)際的應(yīng)用程序,又適用于真正的計(jì)算機(jī)部署。從程序?qū)崿F(xiàn)的角度來說,客戶端和服務(wù)端實(shí)際是計(jì)算機(jī)上的兩個(gè)進(jìn)程的交互。服務(wù)端進(jìn)程逐一等待并處理客戶端請求。運(yùn)行服務(wù)端進(jìn)程的計(jì)算機(jī)系統(tǒng)一般通過所提供的服務(wù)來命名。例如,提供郵件服務(wù)的主機(jī)稱為郵件服務(wù)器,提供遠(yuǎn)程文件訪問的計(jì)算機(jī)稱為文件服務(wù)器等。1.2.4B/S模式B/S(Browse/Server)也叫B/S模式或B/S模型在分布式系統(tǒng)基礎(chǔ)上抽象
出來的網(wǎng)絡(luò)通信模型;僅使用HTTP(Hypertext
TransferProtocol,超文
本傳送協(xié)議)進(jìn)行通信。B/S編程模型一般采用三層架構(gòu)設(shè)計(jì),由用戶界面、邏輯處理和數(shù)據(jù)支持構(gòu)成。B/S模式的應(yīng)用程序也稱為Web應(yīng)用程序。B/S模式的優(yōu)點(diǎn)是單臺(tái)計(jì)算機(jī)可以訪問任何Web服務(wù)器。其客戶端應(yīng)用程序是一種通用的瀏覽器。只需要知道服務(wù)器的網(wǎng)址(IP地址或域名)即可訪問。1.2.5網(wǎng)絡(luò)應(yīng)用程序編程模型網(wǎng)絡(luò)應(yīng)用程序的編程模型分類從外部表現(xiàn)形式上分:控制臺(tái)界面、Windows窗體界面、Web窗體界面;從NET實(shí)現(xiàn)技術(shù)上分:控制臺(tái)應(yīng)用程序、WinForm應(yīng)用程序、WPF應(yīng)用程序、Windows應(yīng)用商店應(yīng)用程序(僅適用于Windows8)、基于ASP.NET的Web應(yīng)用程序以及面向服務(wù)的WCF應(yīng)用程序;1.C/S客戶端應(yīng)用程序編程模型WPF是編寫在Windows7、Windows8操作系統(tǒng)上運(yùn)行的C/S客戶端應(yīng)用程序編程模型。WPF整合了Windows窗體和Web窗體,為用戶界面、2D/3D圖形、文檔、音頻和視頻等提供了統(tǒng)一的界面描述和操作方法。使用WPF技術(shù)設(shè)計(jì)的代碼基本上是一樣的,大大縮小了Windows應(yīng)用程序和Web應(yīng)用程序之間的差別。另外,基于DirectX技術(shù)的WPF不僅帶來了絢麗的3D界面,而且其圖形向量渲染引擎也大大改進(jìn)了傳統(tǒng)的2D界面。本書所有的客戶端程序例子都用WPF應(yīng)用程序來實(shí)現(xiàn)。2.C/S服務(wù)端應(yīng)用程序編程模型面向服務(wù)的C/S服務(wù)端應(yīng)用程序,建議用WCF服務(wù)應(yīng)用程序??刂婆_(tái)應(yīng)用程序、WinForm或者WPF應(yīng)用程序的練習(xí)可以方便觀察和理解相關(guān)的概念和實(shí)現(xiàn)原理服務(wù)器的用途是為客戶端程序提供各種服務(wù),在實(shí)際的應(yīng)用開發(fā)中,一般不會(huì)將運(yùn)行監(jiān)視等功能放到服務(wù)端來實(shí)現(xiàn)。網(wǎng)絡(luò)管理員的職責(zé)處理服務(wù)器運(yùn)行過程中出現(xiàn)的不正常情況;而不是為了讓網(wǎng)絡(luò)管理員去調(diào)試或運(yùn)行某個(gè)服務(wù)器程序;管理員通過專用的客戶端程序去操作,而不是直接到服務(wù)器上去操作;3.B/S應(yīng)用程序編程模型B/S應(yīng)用程序編程模型(Web應(yīng)用程序)主要有:ASP.NET;Silverlight;WPF瀏覽器應(yīng)用程序;適用于企業(yè)內(nèi)部網(wǎng),即通過https來訪問而不是通過http來訪問1.3TCP/IP網(wǎng)絡(luò)協(xié)議1.3.1TCP/IP基本概念1.3.2傳統(tǒng)的網(wǎng)絡(luò)編程技術(shù)簡介1.3.1TCP/IP基本概念TCP/IP網(wǎng)絡(luò)模型采用4層結(jié)構(gòu),分別為:應(yīng)用層、傳輸層、網(wǎng)際層和網(wǎng)絡(luò)接口層。各個(gè)層次的功能和對應(yīng)的常用網(wǎng)絡(luò)協(xié)議如下表。層次名稱功
能協(xié)
議應(yīng)用層(ApplicationLayer)負(fù)責(zé)實(shí)現(xiàn)與應(yīng)用程序相關(guān)的功能FTP(文件傳輸協(xié)議)HTTP(超文本傳輸協(xié)議)DNS(域名服務(wù)器協(xié)議)SMTP(簡單郵件傳輸協(xié)議)NFS(網(wǎng)絡(luò)文件系統(tǒng)協(xié)議)傳輸層(Transport
Layer)負(fù)責(zé)提供節(jié)點(diǎn)間的數(shù)據(jù)傳送以及應(yīng)用程序之間的通信服務(wù),主要功能是數(shù)據(jù)格式化、數(shù)據(jù)確認(rèn)和丟失重傳等TCP(控制傳輸協(xié)議)UDP(用戶數(shù)據(jù)報(bào)協(xié)議)網(wǎng)際層(Inter-networkLayer)負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī),但它不檢查數(shù)據(jù)包是否被正確接收IP(網(wǎng)際協(xié)議)ICMP(網(wǎng)際控制消息協(xié)議)ARP(地址解析協(xié)議)RARP(反向地址解析協(xié)議)網(wǎng)絡(luò)接口層(Host-to-NetLayer)負(fù)責(zé)實(shí)際數(shù)據(jù)的傳輸HDLC(高級(jí)鏈路控制協(xié)議)PPP(點(diǎn)對點(diǎn)協(xié)議)SLIP(串行線路接口協(xié)議)1.3.2傳統(tǒng)的網(wǎng)絡(luò)編程技術(shù)簡介網(wǎng)絡(luò)應(yīng)用程序若要偵聽網(wǎng)絡(luò)并發(fā)送請求,需要添加命名空間System.Net.Sockets的引用該命名空間中提供TcpClient類、TcpListener類和UdpClient類;封裝了不同傳輸協(xié)議建立連接的實(shí)現(xiàn)細(xì)節(jié),提供了多種傳輸數(shù)據(jù)的操作方法。若要在套接字級(jí)別進(jìn)行控制,可直接用該命名空間下的Socket類。用這些傳統(tǒng)技術(shù)編寫網(wǎng)絡(luò)應(yīng)用程序的門檻較高;對計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)現(xiàn)原理非常熟悉,還要有豐富的網(wǎng)絡(luò)編程經(jīng)驗(yàn);在本書后續(xù)的章節(jié)中,主要學(xué)習(xí)新的網(wǎng)絡(luò)編程技術(shù)。這些新技術(shù)都是以傳統(tǒng)技術(shù)為基礎(chǔ)的。1.套接字編程(Socket類)套接字是支持TCP/IP網(wǎng)絡(luò)通信的基本操作單元;在一個(gè)套接字實(shí)例中,保存:本機(jī)的IP地址和端口、對方的IP地址
和端口、雙方通信采用的網(wǎng)絡(luò)協(xié)議等信息。套接字有3種不同的類型(System.Net.Sockets命名空間下的Socket類)流式套接字:實(shí)現(xiàn)面向連接的TCP通信數(shù)據(jù)報(bào)套接字:實(shí)現(xiàn)無連接的UDP通信原始套接字:實(shí)現(xiàn)IP數(shù)據(jù)包通信以上套接字均可用來實(shí)現(xiàn)?;赥CP和UDP的應(yīng)用程序中,使用TcpListener類、TcpClient類或UdpClient類,和使用Socket類來實(shí)現(xiàn)都是可以的。而編寫自定義的新網(wǎng)絡(luò)協(xié)議程序時(shí),則只能用Socket類來實(shí)現(xiàn)。2.TCP應(yīng)用編程(TcpClient類、TcpListener類)
IP連接領(lǐng)域有兩種通信類型:面向連接的(Connection-Oriented)和無連接的(Connectionless)。在面向連接的套接字中,使用TCP來建立兩個(gè)IP地址端點(diǎn)之間的會(huì)話。一旦建立了這種連接,就可以在設(shè)備之間進(jìn)行可靠的數(shù)據(jù)傳輸。對于網(wǎng)絡(luò)應(yīng)用程序而言,在System.Net.Sockets命名空間下,除了套接字以外,.NET框架還提供了TcpClient類和TcpListener類。這些類封裝了不同傳輸協(xié)議建立連接的細(xì)節(jié),提供了多種傳輸數(shù)據(jù)的操作方法。雖然TcpClient類和TcpListener類對套接字做了進(jìn)一步的封裝,在一定程度上簡化了代碼編寫的復(fù)雜度,但是,仍然需要程序員編寫大量的實(shí)現(xiàn)代碼。3.UDP應(yīng)用編程(UdpClient類)UDP使用無連接的套接字,無連接的套接字不需要在網(wǎng)絡(luò)設(shè)備之間發(fā)送連接信息。因此,在程序中很難確定有哪些服務(wù)器和客戶端。UdpClient類是在UDP層面對套接字編程的進(jìn)一步封裝。它同樣在一定程度上簡化了代碼編寫的復(fù)雜度,但是,也同樣需要程序員編寫大量的實(shí)現(xiàn)代碼。4.其他傳統(tǒng)的網(wǎng)絡(luò)應(yīng)用編程技術(shù)HTTP應(yīng)用編程FTP應(yīng)用編程SMTP與POP3應(yīng)用編程P2P應(yīng)用編程這些傳統(tǒng)編程技術(shù)的實(shí)現(xiàn)在本書第2版都做了相應(yīng)的介紹。了解這些傳統(tǒng)技術(shù)的基本實(shí)現(xiàn)思路,對進(jìn)一步理解新的網(wǎng)絡(luò)編程技術(shù)會(huì)非常有幫助。1.4IP地址轉(zhuǎn)換與域名解析1.4.1IP地址與端口1.4.2IP地址轉(zhuǎn)換相關(guān)類1.4.3域名解析IP地址轉(zhuǎn)換與域名解析相關(guān)的類都在System.Net命名空間下1.4.1IP地址與端口在網(wǎng)絡(luò)上,識(shí)別遠(yuǎn)程主機(jī)的信息主要由兩部分組成:一是主機(jī)標(biāo)識(shí),用于識(shí)別與本地計(jì)算機(jī)通信的是哪臺(tái)遠(yuǎn)程主機(jī);二是端口號(hào),用于識(shí)別和遠(yuǎn)程主機(jī)的哪個(gè)進(jìn)程通信。1.IP地址在因特網(wǎng)中,每臺(tái)聯(lián)網(wǎng)的主機(jī)都要有一個(gè)在全世界范圍內(nèi)唯一的標(biāo)識(shí),該標(biāo)識(shí)稱為IP地址。2.端口IP地址僅僅能夠識(shí)別到某臺(tái)主機(jī),而不能識(shí)別該主機(jī)上的進(jìn)程;如果要進(jìn)一步識(shí)別是哪個(gè)進(jìn)程,還需要引入新的地址空間,這就是端口(Port)。1.IP地址一個(gè)IP地址主要由兩部分組成:一部分用于識(shí)別該地址所屬的網(wǎng)絡(luò)號(hào),另一部分指明網(wǎng)絡(luò)內(nèi)的主機(jī)號(hào)。網(wǎng)絡(luò)號(hào)由Internet權(quán)力機(jī)構(gòu)分配,主機(jī)號(hào)由各個(gè)網(wǎng)絡(luò)的管理員統(tǒng)一分配。(1)IPv4編址方案由4個(gè)字節(jié)(十進(jìn)制表示)組成的二進(jìn)制值進(jìn)行識(shí)別,中間用圓點(diǎn)分開,這種方法叫做點(diǎn)分十進(jìn)制表示法。(2)IPv6編址方案每個(gè)IP地址有16個(gè)字節(jié)(128位二進(jìn)制數(shù)),其完整格式用8段16進(jìn)制表示,各段之間用冒號(hào)分隔。5類IPv4的IP地址A類:0.x.x.x~127.x.x.x (32位二進(jìn)制最高位為0)由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)的主機(jī)地址組成;一個(gè)特殊的IP地址,即,該地址專用于本機(jī)回路測試;B類:128.x.x.x~191.x.x.x (32位二進(jìn)制最高2位為10)由2字節(jié)的網(wǎng)絡(luò)地址和2字節(jié)的主機(jī)地址組成;C類:192.x.x.x~223.x.x.x (32位二進(jìn)制最高3位為110)由3字節(jié)網(wǎng)絡(luò)地址和1字節(jié)主機(jī)地址組成,適用于小規(guī)模的局域網(wǎng);D類:224.x.x.x~239.x.x.x (32位二進(jìn)制最高4位為1110)一種特殊類型的IP地址:多點(diǎn)廣播地址;E類:240.x.x.x~255.x.x.x (32位二進(jìn)制最高5位為11110)特殊用途備用;IPv6編址方案簡化表示形式每段中前面的0可以省略連續(xù)的0可省略為“::”但只能出現(xiàn)一次。例如:
1080:0:0:0:8:800:200C:417A簡寫為1080::8:800:200C:417AFF01:0:0:0:0:0:0:101簡寫為FF01::1010:0:0:0:0:0:0:1簡寫為::10:0:0:0:0:0:0:0簡寫為::本機(jī)回環(huán)地址:IPv4為,IPv6為::1另外,IPv6沒有定義廣播地址,其功能由多播地址替代。2.端口端口有兩種含義:一是指物理意義上的端口,如ADSLModem、集線器的接口;二是指邏輯意義上的端口,即進(jìn)程標(biāo)識(shí),端口號(hào)的范圍從0到65535,比如用于HTTP的80端口,用于FTP的21端口等。在本書中的端口均指邏輯意義上的端口。端口是為了解決與多個(gè)進(jìn)程同時(shí)進(jìn)行通信的問題??捎枚丝诘刂返姆秶鞘M(jìn)制的0~65535。端口地址用兩字節(jié)二進(jìn)制數(shù)來表示;1000以內(nèi)的端口號(hào)大多被標(biāo)準(zhǔn)協(xié)議所占用;應(yīng)用程序中可以自由使用的端口號(hào)一般都使用大于1000的值。1.4.2IP地址轉(zhuǎn)換相關(guān)類網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)通信時(shí),必須知道對方的IP地址和端口號(hào)以及采用的網(wǎng)絡(luò)通信協(xié)議;在某些應(yīng)用中,可能還需要檢測與網(wǎng)卡相關(guān)的信息。復(fù)雜的網(wǎng)絡(luò)應(yīng)用程序中,需要掌握幾個(gè)最基本的類:1、提供網(wǎng)際協(xié)議IP地址的IPAddress類;2、包含IP地址和端口號(hào)的IPEndPoint類;3、為Internet或Intranet主機(jī)提供信息容器的IPHostEntry類。1.IPAddress類(1/2)位于System.Net命名空間下;提供了對IP地址的轉(zhuǎn)換和處理功能。靜態(tài)Parse方法將IP地址字符串轉(zhuǎn)換為IPAddress的實(shí)例。例如:如果IP地址字符串格式不正確,調(diào)用Parse方法時(shí)會(huì)出現(xiàn)異常。Try{IPAddressip=IPAddress.Parse("6");}Catch{MessageBox.Show("請輸入正確的IP地址!");}1.IPAddress類(2/2)另外,利用該實(shí)例的AddressFamily屬性可判斷該IP地址是IPv6還是IPv4。例如:IPAddress類還提供了7個(gè)只讀字段,分別代表程序中使用的特殊IP地址。IPAddressip=IPAddress.Parse("::1");if(ip.AddressFamily==AddressFamily.InterNetworkV6){MessageBox.Show("這是IPv6地址");}IPAddress類常見只讀字段名
稱說
明Any提供一個(gè)IPv4地址,指示服務(wù)端應(yīng)偵聽所有網(wǎng)絡(luò)接口上的客戶端活動(dòng),它等效于Broadcast提供IPv4網(wǎng)絡(luò)廣播地址,它等效于55IPv6Any提供所有可用的IPv6地址IPv6Loopback表示系統(tǒng)的IPv6回環(huán)地址,等效于::1IPv6None提供不使用任何網(wǎng)絡(luò)接口的IP地址Loopback表示系統(tǒng)的IPv4回環(huán)地址,等效于None表示Socket不應(yīng)偵聽客戶端活動(dòng)(不使用任何網(wǎng)絡(luò)接口)2.IPEndPoint類IPEndPoint是與IPAddress概念相關(guān)的一個(gè)類,它包含應(yīng)用程序連接到主機(jī)上的服務(wù)所需的主機(jī)和端口信息。它由兩部分組成,一個(gè)是主機(jī)IP地址,另一個(gè)是端口號(hào)。IPEndPoint類的構(gòu)造函數(shù)之一為:publicIPEndPoint(IPAddressaddress,intport);其中,第一個(gè)參數(shù)指定IP地址,第二個(gè)參數(shù)指定端口號(hào)。例如:IPAddresslocalAddress=IPAddress.Parse("");IPEndPointiep=newIPEndPoint(localAddress,65000);strings1="IP地址為:"+iep.Address;strings2="IP端口為:"+iep.Port;3.IPHostEntry類IPHostEntry類將一個(gè)域名系統(tǒng)(DNS)的主機(jī)名與一組別名和一組匹配的IP地址關(guān)聯(lián)。該類一般和Dns類一起使用。常用屬性AddressList屬性獲取或設(shè)置與主機(jī)關(guān)聯(lián)的IP地址列表(包括IPv4和IPv6)HostName屬性包含了指定主機(jī)的主機(jī)名靜態(tài)方法GetHostEntry()及其AddressList屬性獲取本地或遠(yuǎn)程主機(jī)的IP地址列表。例如://獲取搜狐服務(wù)器的所有IP地址IPAddress[]ips= Dns.GetHostEntry(“”).AddressList;1.4.3域名解析IP地址:能夠唯一地標(biāo)識(shí)網(wǎng)絡(luò)上的計(jì)算機(jī)的數(shù)字型地址;域名:用字符型的名字來標(biāo)識(shí)IP;字符型地址、域名地址,簡稱域名(DomainName)域名解析:將域名轉(zhuǎn)換為對應(yīng)IP地址的過程;DNS(DomainNameSystem,域名系統(tǒng))是因特網(wǎng)的一項(xiàng)核心服務(wù),它可以將域名和IP地址相互轉(zhuǎn)換?;ヂ?lián)網(wǎng)中存在一些裝有域名系統(tǒng)的域名服務(wù)器,上面分層次存放許多域名到IP地址轉(zhuǎn)換的映射表。System.Net命名空間下的Dns類提供了方便的域名解析功能,可利用它從Internet域名系統(tǒng)檢索指定主機(jī)的信息。Dns類常用的靜態(tài)方法方法名稱說
明GetHostAddresses返回指定主機(jī)的Internet協(xié)議IP地址,與該方法對應(yīng)的還有異步方法GetHostEntry將主機(jī)名或IP地址解析為IPHostEntry實(shí)例,與該方法對應(yīng)的還有異步方法GetHostName獲取本地計(jì)算機(jī)的主機(jī)名.NET框架既提供了同步獲取的方法,也提供了異步獲取的方法。本章只介紹Dns類的同步方法,關(guān)于異步操作的用法在后面的章節(jié)中再介紹。(1)GetHostAddresses方法利用GetHostAddresses方法可以獲取指定主機(jī)的IP地址,該方法返回一個(gè)IPAddress類型的數(shù)組。方法原型為publicstaticIPAddress[]GetHostAddresses(stringhostNameOrAddress);參數(shù)中的hostNameOrAddress表示要解析的主機(jī)名或IP地址。例如:IPAddress[]ips=Dns.GetHostAddresses("");若hostNameOrAddress是IP地址,則直接返回此地址;
若hostNameOrAddress是空字符串,則返回所有IPv4和IPv6地址。例如:IPAddress[]ips=Dns.GetHostAddresses("");//獲取本機(jī)的所有IP地址(2)GetHostEntry方法GetHostEntry方法可返回一個(gè)IPHostEntry實(shí)例,用于在DNS服務(wù)器中查詢與某個(gè)主機(jī)名或IP地址關(guān)聯(lián)的IP地址列表。方法原型為publicstaticIPHostEntryGetHostEntry(stringhostNameOrAddress)參數(shù)中的hostNameOrAddress表示要解析的主機(jī)名或IP地址。當(dāng)參數(shù)為空字符串時(shí),返回本地主機(jī)的IPHostEntry實(shí)例。例如:IPHostEntryhost=Dns.GetHostEntry("");varipAddresses=host.AddressList;//獲取本機(jī)所有IP地址stringname=host.HostName;//獲取本機(jī)主機(jī)名(3)GetHostName方法該方法用于獲取本機(jī)主機(jī)名。例如:stringhostname=Dns.GetHostName();【例1-1】演示IPAddress類、Dns類、IPHostEntry類和IPEndPoint類的使用方法,顯示中央電視臺(tái)所有服務(wù)器的IP地址信息和本機(jī)主機(jī)名及相關(guān)的IP地址。運(yùn)行效果如圖1-3所示。1.5網(wǎng)卡信息檢測與網(wǎng)絡(luò)流量檢測1.5.1網(wǎng)卡信息檢測相關(guān)類1.5.2網(wǎng)絡(luò)流量檢測相關(guān)類1.5.1網(wǎng)卡信息檢測相關(guān)類1.NetworkInterface類位于System.Net.NetworkInformation命名空間下;可以檢測本機(jī)有多少個(gè)網(wǎng)絡(luò)適配器、哪些網(wǎng)絡(luò)連接可用,并可獲取某個(gè)網(wǎng)絡(luò)適配器的型號(hào)、MAC地址和速度等信息。獲取網(wǎng)絡(luò)適配器相關(guān)信息時(shí),要先構(gòu)造NetworkInterface對象。注意不能直接使用new關(guān)鍵字構(gòu)造該類的實(shí)例,而用該類提供的靜態(tài)GetAllNetworkInterfaces方法得到NetworkInterface類型數(shù)組。每個(gè)網(wǎng)絡(luò)適配器,都包含一個(gè)NetworkInterface對象與之對應(yīng)。例如:NetworkInterface[]adapters= NetworkInterface.GetAllNetworkInterfaces();NetworkInterface類常用的屬性和方法名
稱說
明Name屬性獲取網(wǎng)絡(luò)適配器的名稱Speed屬性獲取網(wǎng)絡(luò)適配器的速度(bit/秒)GetAllNetworkInterfaces方法返回描述本地計(jì)算機(jī)上的所有網(wǎng)絡(luò)適配器對象語法:publicstaticNetworkInterface[]GetAllNetworkInterfaces()GetIPProperties方法描述此網(wǎng)絡(luò)適配器配置的對象語法:publicabstractIPInterfacePropertiesGetIPProperties()GetIPv4Statistics方法獲取IPv4統(tǒng)計(jì)信息語法:publicabstractIPv4InterfaceStatisticsGetIPv4Statistics()GetIsNetworkAvailable方法指示是否有任何可用的網(wǎng)絡(luò)連接語法:publicstaticboolGetIsNetworkAvailable()GetPhysicalAddress方法返回適配器的媒體訪問控制(MAC)地址語法:publicabstractPhysicalAddressGetPhysicalAddress()Supports方法指示接口是否支持指定的協(xié)議(IPv4或IPv6)如果支持則為true2.IPInterfaceProperties類IPInterfaceProperties類提供了檢測IPv4和IPv6的網(wǎng)絡(luò)適配器地址信息,利用該類可檢測本機(jī)所有網(wǎng)絡(luò)適配器支持的各種地址,如DNS服務(wù)器的IP地址、網(wǎng)關(guān)地址以及多路廣播地址等。IPInterfaceProperties是一個(gè)抽象類,不能直接創(chuàng)建該類的實(shí)例,而是通過調(diào)用NetworkInterface對象的GetIPProperties方法得到該類的實(shí)例。例如:NetworkInterface[]adapters= NetworkInterface.GetAllNetworkInterfaces();IPInterfacePropertiesadapterProperties= adapters[0].GetIPProperties();IPInterfaceProperties類常用的屬性和方法名
稱說
明AnycastAddresses屬性獲取分配給此接口的任意廣播IP地址DhcpServerAddresses屬性獲取此接口的動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)服務(wù)器的地址DnsAddre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)下冊閱讀理解提升計(jì)劃
- 2024-2025年三年級(jí)第二學(xué)期學(xué)生個(gè)性發(fā)展計(jì)劃
- 心理健康休閑活動(dòng)計(jì)劃
- 2025年人教版六年級(jí)下冊數(shù)學(xué)教學(xué)計(jì)劃課外拓展活動(dòng)
- 零售業(yè)庫存管理保障措施
- 2025年北方稀土研究報(bào)告
- 礦業(yè)領(lǐng)域管道成品保護(hù)措施評(píng)估
- 數(shù)字傳播對社會(huì)關(guān)系的影響-洞察闡釋
- 2025年防水檢驗(yàn)報(bào)告
- 一年級(jí)日記小白兔200字8篇范文
- 高空吊板作業(yè)專項(xiàng)方案
- 事業(yè)單位員工保密協(xié)議書范本(2024版)
- 化工設(shè)備機(jī)械基礎(chǔ)試題庫(附參考答案)
- JG-T+502-2016環(huán)氧樹脂涂層鋼筋
- CJJ99-2017 城市橋梁養(yǎng)護(hù)技術(shù)標(biāo)準(zhǔn)
- 國際金融(吉林大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年吉林大學(xué)
- QB/T 6019-2023 制漿造紙專業(yè)設(shè)備安裝工程施工質(zhì)量驗(yàn)收規(guī)范 (正式版)
- DB5117∕T 59-2022 醫(yī)療衛(wèi)生機(jī)構(gòu)反恐怖防范規(guī)范
- 【王迎賓】中國雜交小麥之父-李振
- MOOC 流行歌曲演唱-武漢理工大學(xué) 中國大學(xué)慕課答案
- 線下陪玩合同模板
評(píng)論
0/150
提交評(píng)論