c#高級網(wǎng)絡(luò)程序的設(shè)計課后答案_第1頁
c#高級網(wǎng)絡(luò)程序的設(shè)計課后答案_第2頁
c#高級網(wǎng)絡(luò)程序的設(shè)計課后答案_第3頁
免費預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 簡述分散式、集中式和分布式通信模型的特點。【參考解答】分散式:各自獨立的系統(tǒng)之間沒有資源或信息的交換或共享。存在大量數(shù)據(jù)冗余且維護 成本高,已被淘汰。集中式:數(shù)據(jù)和管理功能都集中在單臺計算機上,用戶僅能通過終端來操作。優(yōu)點是硬 件成本低、無冗余和不一致性問題,缺點是可靠性和靈活性低,反應(yīng)慢。分布式:是分散式系統(tǒng)和集中式系統(tǒng)的混合體,是目前比較完善的解決方案。2 .簡述C/S和B/S的優(yōu)缺點?!緟⒖冀獯稹緾/S是一種胖客戶端應(yīng)用程序編程架構(gòu),其主要工作都在客戶端運行。優(yōu)點是可以充分 利用本地計算機的性能優(yōu)勢,缺點是需要在本機安裝客戶端軟件。B/S使用HTTP進行通信。優(yōu)點是單臺計算機可以訪問

2、任何Web服務(wù)器,缺點是 B/S模式有沙盒限制。3 .什么是套接字?套接字有哪幾種類型?【參考解答】套接字是支持TCP/IP網(wǎng)絡(luò)通信的基本操作單元,是不同主機間的進程進行通信的端點。在一個套接字實例中,既保存了本機的IP地址和端口,也保存了對方的IP地址和端口,同時也保存了雙方通信采用的網(wǎng)絡(luò)協(xié)議等信息。套接字有3種類型:流式套接字、數(shù)據(jù)報套接字和原始套接字。1簡要回答下列問題。(1) 進程和線程有什么區(qū)別?為什么要用多線程?多線程適用于哪種場合?(2) 前臺線程和后臺線程有什么區(qū)別和聯(lián)系?如何判斷一個線程屬于前臺線程還是 后臺線程?如何將一個線程設(shè)置為后臺線程?【參考解答】(1) 進程是正在執(zhí)

3、行的程序,線程是某個進程中的一個或多個執(zhí)行流。多線程可讓多個任務(wù)同時執(zhí)行。當(dāng)執(zhí)行需要較長時間才能完成的連續(xù)操作時,或者等待網(wǎng)絡(luò)或其他I/O設(shè)備相應(yīng)時,都可以使用多線程技術(shù)。(2) 個線程要么是前臺線程要么是后臺線程。兩者的區(qū)別是:后臺線程不會影響進程 的終止,而前臺線程則會影響進程的終止。2什么是同步?為什么需要同步?C#提供了什么語句可以簡單地實現(xiàn)代碼同步?【參考解答】執(zhí)行某語句時,在該語句完成之前不會執(zhí)行其后面的代碼,這種執(zhí)行方式稱為同步執(zhí)行。當(dāng)并行執(zhí)行的多個線程同時訪問某些資源時,必須考慮如何讓多個線程保持同步。同步的目 的是為了防止多個線程同時訪問某些資源時出現(xiàn)死鎖和爭用情況。C#提供

4、的lock語句可以簡單地實現(xiàn)代碼同步。3 什么是線程池?使用線程池有什么好處?【參考解答】線程池是在后臺執(zhí)行任務(wù)的線程集合,好處有:如當(dāng)某個線程無法進入線程池執(zhí)行時先 將其放入等待隊列,自動決定用哪個處理器執(zhí)行線程池中的某個線程,自動調(diào)節(jié)這些線程執(zhí) 行時的負載平衡問題等。 另外,線程池總是在后臺異步處理請求的任務(wù),而不會占用主線程,也不會延遲主線程中后續(xù)請求的處理。4應(yīng)用程序域和進程有什么區(qū)別和聯(lián)系?【參考解答】一個進程既可以只包含一個應(yīng)用程序域,也可以同時包含多個相互隔離的應(yīng)用程序域。 多進程是在操作系統(tǒng)級別使用的功能,資源消耗較大,細節(jié)控制復(fù)雜;應(yīng)用程序域是在應(yīng)用 程序級別使用的功能,比直

5、接用多進程來實現(xiàn)進程管理速度快、資源消耗少而且更安全,是 輕量級的進程管理。1 什么是編碼?什么是解碼?為什么要對字符進行編碼和解碼?.NET框架提供了哪些用于字符編碼和解碼的類?【參考解答】將字符序列轉(zhuǎn)換為字節(jié)序列的過程稱為編碼;當(dāng)這些字節(jié)傳送到網(wǎng)絡(luò)的接收方時,接收 方再將字節(jié)序列轉(zhuǎn)換為字符序列,這種過程稱為解碼。在網(wǎng)絡(luò)通信中,很多情況下通信雙方傳達的都是字符信息。但是,字符信息并不能直接 從網(wǎng)絡(luò)的一端傳遞到另一端,這些字符信息首先需要被轉(zhuǎn)換成一個字節(jié)序列,然后才能在網(wǎng) 絡(luò)中傳輸。因此,發(fā)送方需要進行編碼,相應(yīng)的接收方就要執(zhí)行解碼。.NET框架中一般常用 Encoding類實現(xiàn)編碼和解碼。E

6、ncoding類位于System.Text命名空 間下,該類主要用于對字符集進行編碼和解碼以及將一種編碼格式轉(zhuǎn)換為另一種編碼格式。如果有更詳細的需求可以還使用與Encoding類位于同一命名空間下的Encoder和Decoder類來進行編碼和解碼。2 .NET提供的從Stream類繼承的數(shù)據(jù)流都有哪些?【參考解答】文件流(FileStream)、存流( Memorystream )、網(wǎng)絡(luò)流( Networkstream )加密流(CryptoStream )。3 簡述對稱加密和不對稱加密的特點及實現(xiàn)原理?!緟⒖冀獯稹繉ΨQ加密:(1)加密和解密數(shù)據(jù)使用同一個密鑰;(2)私鑰算法以塊為單位加密數(shù)據(jù)

7、,一次加密一個數(shù)據(jù)塊,因此支持數(shù)據(jù)流。對稱加密算法的優(yōu)點:強度高,加、解密速度快,適合加密大量數(shù)據(jù)。對稱加密的缺點:通信雙方使用相同的密鑰和IV加密和解密,發(fā)送方需要先將密鑰和IV傳遞給接收方。如果攻擊者截獲了密鑰和IV ,也就等于知道了如何解密數(shù)據(jù)。不對稱加密:(1)使用一個需要的私鑰和一個可以對任何人公開的公鑰。用公鑰加密的數(shù)據(jù)只能用私鑰解密,反之,用私鑰加密的數(shù)據(jù)只能用公鑰解密;(2 )私鑰加密算法使用長度可變的緩沖區(qū),因此無法使用流。不對稱加密的優(yōu)點:更不容易被攻擊。不對稱加密的缺點:由于無法使用流,因此不適合加密大量數(shù)據(jù)。4 .什么是數(shù)字簽名?數(shù)字簽名有什么用途?【參考解答】在應(yīng)用程

8、序中,可以利用數(shù)字簽名實現(xiàn)數(shù)據(jù)身份驗證和數(shù)據(jù)完整性驗證。數(shù)據(jù)身份驗證 是為了驗證數(shù)據(jù)是不是持有私鑰的人發(fā)送的;數(shù)據(jù)完整性驗證則用于驗證數(shù)據(jù)在傳輸過程中是否被修改過。數(shù)字簽名的用途:通過In ternet下載文件后,驗證下載的文件是否和原始文件完全相同。 換言之,如果通信雙方希望確保信息是來自對方而不是來自第三方,需要使用數(shù)字簽名進行 身份驗證。另外,數(shù)字簽名還可以防止特定一方否認曾發(fā)送過的信息。第5章1僅包含async和await關(guān)鍵字的異步方法與用Task.Run調(diào)用的異步方法有和不同?【參考解答】async和await關(guān)鍵字是C# 5.0提供的功能,僅包含 async和await關(guān)鍵字的異

9、步方法不 會創(chuàng)建新線程,它只是表示在當(dāng)前線程中異步執(zhí)行指定的任務(wù)。而Task.Run方法是.NET框架4.5提供的功能,它會在線程池中用單獨的線程執(zhí)行某個任務(wù)。2 把普通方法和異步方法作為任務(wù)來執(zhí)行時,調(diào)用方法有何不同?【參考解答】普通方法要用 Task.Run方法去調(diào)用,或者用Task、Task<TResult>類的構(gòu)造函數(shù)顯示創(chuàng)建Task實例,然后再啟動。異步方法不需要用Task.Run方法去調(diào)用。3. Action和Func委托有什么不同?【參考解答】Action委托封裝了不帶返回值的方法(有016個輸入?yún)?shù),返回類型為void ) , Func委托封裝了帶返回值的方法(有0

10、16個輸入?yún)?shù),返回類型為TResult)。4. 有幾種創(chuàng)建任務(wù)的方式?【參考解答】有4種方式。(1) 利用Task.Run方法隱式創(chuàng)建和執(zhí)行任務(wù);(2) 利用async和await關(guān)鍵字隱式創(chuàng)建異步任務(wù);(3) 利用WPF控件的調(diào)度器隱式創(chuàng)建和執(zhí)行任務(wù);(4) 通過顯式調(diào)用 Task或Task<TResult>的構(gòu)造函數(shù)創(chuàng)建任務(wù)。5. 在WPF應(yīng)用程序中有幾種可用的定時器?【參考解答】有3種。(1) System.Timers.Timer 類;(2) System.Windows.Threading.DispatcherTimer 類;(3) System.Threading.T

11、imer 類。6. 簡述實現(xiàn)任務(wù)的取消功能的機制?!緟⒖冀獯稹縎ystem.Threading.CancellationTokenSource 用于創(chuàng)建取消通知,稱為取消源。結(jié)構(gòu)用于傳播應(yīng)取消操作的通知,稱為取消令牌。調(diào)用任務(wù)的代碼在分配任務(wù)前,可先用CancellationTokenSource類創(chuàng)建一個取消源。在調(diào)用任務(wù)的代碼中, 可通過取消源的 Cancel方法發(fā)出取消通知, 該方法會將每個取消令牌副 本上的 IsCa ncellati on Requested 屬性都設(shè)置為 true。執(zhí)行任務(wù)的方法接收到取消通知后,可以終止執(zhí)行。第6章1 . TPL支持哪些并行方式?【參考解答】TPL

12、支持數(shù)據(jù)并行,任務(wù)并行和并行查詢(PLINQ )。2 并行編程中的分區(qū)有哪些形式?【參考解答】按圍分區(qū);按區(qū)塊分區(qū);動態(tài)分區(qū);自定義分區(qū)。3 簡述Parallel幫助器類有哪些?功能分別是什么?【參考解答】幫助器類包括 ParallelOptions、ParallelLoopState、ParallelLoopResult、CancellationToken 禾口 CancellationTokenSource。ParallelOptio ns類用于為Parallel類的方法提供操作選項,常用屬性有:Ca ncellati on Token、 MaxDegreeOfParallelism、Ta

13、skScheduler。ParallelLoopState類用于將 Parallel循環(huán)的迭代與其他迭代交互。常用屬性和方法有: IsExceptional 屬性、IsStopped 屬性、Break 方法、Stop 方法。ParallelLoopResult類用于提供 Parallel循環(huán)的完成狀態(tài),常用屬性有:IsCompleted、LowestBreakIteration 。CancellationTokenSource用于創(chuàng)建取消通知,稱為取消源。CancellationToken結(jié)構(gòu)用于傳播應(yīng)取消操作的通知,稱為取消令牌。4 常用的并發(fā)集合類有幾種?【參考解答】Con curre n

14、tBag<T>Con curre ntQueue<T>Con curre ntStack<T>ConcurrentDictionary<TKey, TValue> 。5 .使用Parallel.Invoke方法時,為了能讓 Action與WPF界面交互,要注意什么問題?【參考解答】WPF當(dāng)前不能使用默認的任務(wù)調(diào)度程序,而是通過設(shè)置并行選項,將任務(wù)調(diào)度程序與 同步上下文關(guān)聯(lián)起來,相關(guān)代碼如下。ParallelOpti ons opti ons = new ParallelOpti on s();opti on s.TaskScheduler = T

15、askScheduler.FromCurre ntSynchroni zati onCon text();第7章1 簡要介紹 Web服務(wù)和 WCF有哪些區(qū)別和聯(lián)系?!緟⒖冀獯稹縒eb服務(wù)是一種以XML作為數(shù)據(jù)交換格式、部署在Web服務(wù)器上的一種應(yīng)用程序服務(wù), 在Web服務(wù)中,可公開被各種客戶端程序調(diào)用的方法。WCF是微軟公司推出的符合 SOA思想的分布式應(yīng)用程序技術(shù)框架和編程模型,是建立 在消息通信這一概念基礎(chǔ)之上的一個運行時服務(wù)系統(tǒng)。Web服務(wù)只是 WCF的其中一部分,除了 Web服務(wù)外,WCF還包括其他各種服務(wù)。2 簡要介紹 WCF服務(wù)的承載方式及其特點?!緟⒖冀獯稹縒CF服務(wù)的承載方式包

16、括:利用IIS或者WAS承載、利用Windows服務(wù)承載、自承載。其特點如下。(1) 用IIS或者WAS承載:這是最常用的一種承載方式,特點是部署簡單,方便。(2) 用 Windows服務(wù)承載:用【W(wǎng)CF服務(wù)庫】模板創(chuàng)建的 WCF服務(wù)利用 Windows進 程去承載。(3) 自承載:指開發(fā)人員自己編寫代碼實現(xiàn)承載WCF的工作。優(yōu)點是實現(xiàn)靈活,需要 的環(huán)境支持最小。缺點是高級宿主管理功能需要自己寫代碼去實現(xiàn)。3什么是服務(wù)協(xié)定,什么是數(shù)據(jù)協(xié)定,分別用哪些特性聲明服務(wù)協(xié)定和數(shù)據(jù)協(xié)定?【參考解答】服務(wù)協(xié)定是指 WCF對客戶端公開哪些服務(wù)。WCF服務(wù)端通過服務(wù)協(xié)定向客戶端公開以下容:操作方法、消息交換模

17、式、采用的通信協(xié)議以及序列化格式。服務(wù)協(xié)定用ServiceC on tract 特性和OperationContract特性來共同聲明。數(shù)據(jù)協(xié)定描述的是消息中包含哪些數(shù)據(jù),即規(guī)定哪些數(shù)據(jù)能夠被序列化為XML傳輸?shù)娇蛻舳恕?shù)據(jù)協(xié)定用 DataC on tract特性和DataMember特性來共同聲明。1. 編寫基于C/S的HTTP應(yīng)用程序時,有哪幾種實現(xiàn)技術(shù)?各自的特點是什么?【參考解答】(1) .用可插接式協(xié)議實現(xiàn)可插接式協(xié)議用 WebRequest類和 WebResponse類來實現(xiàn)。這兩個類是各種與具體的通 信協(xié)議相關(guān)的類的基類,提供了上傳、下載等基本方法?;蛘哒f,不論采用的是哪種通信協(xié)

18、 議,都可以用這兩個對來實現(xiàn)。(2) .用 HttpWebRequest 和 HttpWebResponse 實現(xiàn)HttpWebRequest 類和 HttpWebResponse 類是針對 HTTP 而提供的,分別從 WebRequest 類和WebResponse類繼承而來。(3) .用WCF實現(xiàn)用WCF和基于任務(wù)的編程模型實現(xiàn)HTTP應(yīng)用編程是面向服務(wù)編程中建議的做法。前兩種方式都是傳統(tǒng)的編程模型,在實際項目中,如果用傳統(tǒng)的編程模型來實現(xiàn),除了業(yè)務(wù)處理之外,很多細節(jié)也都需要程序員自己去完成, 例如負載平衡、網(wǎng)絡(luò)監(jiān)視、安全管理、 防攻擊等。而用 WCF來實現(xiàn),程序員只需要處理業(yè)務(wù)邏輯即可,

19、 其他工作讓 WCF部去完成 就行了。2 . WCF客戶端和服務(wù)端的消息交換模式有哪些?【參考解答】請求/應(yīng)答模式、單向模式、雙工模式。第9章1 . TCP有哪些主要特點?【參考解答】(1) 一對一通信。一旦通信雙方建立了 TCP連接,連接中的任何一方都能向?qū)Ψ桨l(fā)送數(shù)據(jù)和接收對方發(fā)送來的數(shù)據(jù)。每個TCP連接只能有兩個端點,而且只能一對一通信。(2) 安全順序傳輸。通過 TCP連接傳送的數(shù)據(jù),能保證數(shù)據(jù)無差錯、不丟失、不重復(fù)地 準確到達接收方,并且保證各數(shù)據(jù)到達的順序與數(shù)據(jù)發(fā)出的順序相同。(3) 通過字節(jié)流發(fā)送數(shù)據(jù)。利用TCP傳輸數(shù)據(jù)時,數(shù)據(jù)以字節(jié)流的形式進行傳輸。(4) 傳輸?shù)臄?shù)據(jù)無消息邊界。

20、2 .解決TCP的無消息邊界問題有哪些常用的辦法?【參考解答】(1) 發(fā)送固定長度的消息。(2) 將消息長度與消息一起發(fā)送。(3) 使用特殊標記分隔消息。3 .簡述基于任務(wù)的異步 TCP編程和直接用Thread實現(xiàn)的主要區(qū)別。【參考解答】直接用Thread來實現(xiàn)TCP編程時,是以多線程為目標來實現(xiàn)的,需要開發(fā)人員自己管理多線程,因此開發(fā)人員必須熟練掌握多線程實現(xiàn)的所有細節(jié),才能編寫出實際的 TCP應(yīng)用程序。而基于任務(wù)的異步 TCP編程是通過任務(wù)來實現(xiàn) TCP編程,用多任務(wù)實現(xiàn)時,即使開 發(fā)人員對多線程、線程池以及資源沖突和負載平衡等所有技術(shù)實現(xiàn)細節(jié)不太熟悉,一樣可以 快速編寫出實際的 TCP應(yīng)

21、用程序,而且程序的健壯性比直接用多線程來實現(xiàn)要高得多。4.簡要回答用 WCF編寫TCP服務(wù)器端和客戶端程序的一般步驟?!緟⒖冀獯稹渴褂肳CF編寫TCP服務(wù)器端應(yīng)用程序的一般步驟如下。1) 創(chuàng)建一個 WPF應(yīng)用程序,在項目中添加 WCF服務(wù)。2) 在WCF服務(wù)接口文件中定義服務(wù)端與客戶端通信的協(xié)定,并實現(xiàn)定義在服務(wù)端需要實現(xiàn)的協(xié)定方法。3) 修改服務(wù)端配置文件,并啟動 WCF服務(wù),等待客戶端調(diào)用并與客戶端通信。4) 根據(jù)實際情況確定是否關(guān)閉 WCF服務(wù)。使用WCF編寫TCP客戶端端應(yīng)用程序的一般步驟如下。1) 創(chuàng)建一個 WPF應(yīng)用程序,添加服務(wù)引用。2) 實現(xiàn)WCF服務(wù)定義在客戶端需要實現(xiàn)的協(xié)定

22、方法。3) 調(diào)用WCF服務(wù),與服務(wù)端進行通信。第10章1. UDP和TCP的主要區(qū)別有哪些?【參考解答】UDP是簡單的、面向數(shù)據(jù)報的無連接協(xié)議,提供了快速但不一定可靠的傳輸服務(wù)。與TCP 一樣,UDP也是構(gòu)建于底層IP協(xié)議之上的傳輸層協(xié)議。與 TCP相比,UDP具有以下特 點。(1) UDP不但支持一對一通信,而且支持一對多通信。(2) UDP傳輸速度比TCP快。(3) UDP有消息邊界,使用 UDP不需要考慮消息邊界問題。(4) UDP不確保數(shù)據(jù)的發(fā)送順序和接收順序一致。(5) UDP可靠性不如 TCP。2. 什么是廣播?什么是多路廣播?兩者有什么區(qū)別?【參考解答】廣播是指同時向多個設(shè)備發(fā)送

23、消息,并且所有子網(wǎng)中的設(shè)備都可以接收到發(fā)送方發(fā)來的消息。每個廣播消息包含一個特殊的IP地址。廣播消息地址分為兩種類型:本地廣播和全球廣播。本地廣播可以向子網(wǎng)中的所有設(shè)備發(fā)送廣播消息,其他網(wǎng)絡(luò)不會受到本地廣播的影響。多路廣播是將消息從一臺設(shè)備發(fā)送到本網(wǎng)或全網(wǎng)選擇的設(shè)備子集上,即發(fā)送到那些加入 指定組播組的設(shè)備上。二者區(qū)別:廣播只能向其所在的子網(wǎng)發(fā)送消息,而且是向子網(wǎng)中的所有設(shè)備發(fā)送消息, 沒有目的性,不但造成了網(wǎng)絡(luò)負載,而且資源消耗較高。而多路廣播是將消息發(fā)送到加入到 特定組播組的機器上,消息有目的性,資源消耗不高。3 .簡要回答利用 UdpCIient對象加入和退出多播組的步驟?!緟⒖冀獯稹吭?/p>

24、UDP協(xié)議中,廣播和組播的實現(xiàn)都是借助于特殊的IP地址實現(xiàn)的。特別是組播比較特殊。對于IPv4來說,多播是指在 到的D類IP地址圍進行廣播。加入多播組時,首選創(chuàng)建UdpCIient對象,然后使用JoinMutiCastGroup方法加入組播組。 當(dāng)退出組播組時,使用UdpCIient對象的DropMulticastGroup方法可以退出多播組,參數(shù)中指出要退出多播組的IPAddress對象。4.簡要回答用 WCF和UDP編寫多播程序與用 UdpCIient類編寫多播程序有哪些主要的 不同點?這兩種實現(xiàn)方式中,各自的優(yōu)缺點有哪些?【參考解答】使用UDP編寫多播程序時,均需要將消息發(fā)送到特殊的IP

25、地址。使用UdpCIient類編寫多播程序時,需要先加入到特定的多播組,然后才能接收來自多播發(fā)送端發(fā)送的數(shù)據(jù)。具 體實現(xiàn)時主要是利用UdpCIient類的JoinMutiCastGroup方法加入組播組,發(fā)送端利用UdpCIient對象的Send方法發(fā)送數(shù)據(jù)到組播地址,接收端利用UdpCIient對象的Receive方法接收數(shù)據(jù)。若要退出組播組調(diào)用DropMulticastGroup方法即可。使用WCF和UDP編寫多播程序時,需要使用WCF服務(wù)定義和實現(xiàn)通信的協(xié)定,然后向組播地址發(fā)送消息,這樣凡是實現(xiàn)WCF服務(wù)定義和實現(xiàn)通信協(xié)定的客戶端均可以接收到消息。使用UdpCIient類實現(xiàn)時,主要借助多線程和多任務(wù)來實現(xiàn),易于理解,但是需要考慮 較

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論