c高级网络程序设计课后答案Word文档格式.docx
- 文档编号:22956363
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:14
- 大小:24.22KB
c高级网络程序设计课后答案Word文档格式.docx
《c高级网络程序设计课后答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《c高级网络程序设计课后答案Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
多线程适用于哪种场合?
(2)前台线程与后台线程有什么区别与联系?
如何判断一个线程属于前台线程还就是后台线程?
如何将一个线程设置为后台线程?
(1)进程就是正在执行的程序,线程就是某个进程中的一个或多个执行流。
多线程可让多个任务同时执行。
当执行需要较长时间才能完成的连续操作时,或者等待网络或其她I/O设备相应时,都可以使用多线程技术。
(2)一个线程要么就是前台线程要么就是后台线程。
两者的区别就是:
后台线程不会影响进程的终止,而前台线程则会影响进程的终止。
2•什么就是同步?
为什么需要同步?
C#提供了什么语句可以简单地实现代码同步?
【参考解答】
执行某语句时,在该语句完成之前不会执行其后面的代码,这种执行方式称为同步执行。
当并行执行的多个线程同时访问某些资源时,必须考虑如何让多个线程保持同步。
同步的目的就是为了防止多个线程同时访问某些资源时出现死锁与争用情况。
C#提供的lock语句可以简
单地实现代码同步。
3.什么就是线程池?
使用线程池有什么好处?
线程池就是在后台执行任务的线程集合,好处有:
如当某个线程无法进入线程池执行时先将其放入等待队列,自动决定用哪个处理器执行线程池中的某个线程,自动调节这些线程执行
时的负载平衡问题等。
另外,线程池总就是在后台异步处理请求的任务,而不会占用主线程,也不会延迟主线程中后续请求的处理。
4.应用程序域与进程有什么区别与联系?
【参考解答】一个进程既可以只包含一个应用程序域,也可以同时包含多个相互隔离的应用程序域。
多
进程就是在操作系统级别使用的功能,资源消耗较大,细节控制复杂;
应用程序域就是在应用程序级别使用的功能,比直接用多进程来实现进程管理速度快、资源消耗少而且更安全,就是轻
量级的进程管理。
第4章
1.什么就是编码?
什么就是解码?
为什么要对字符进行编码与解码?
、NET框架提供了哪些用于字符编码与解码的类?
将字符序列转换为字节序列的过程称为编码;
当这些字节传送到网络的接收方时,接收方再将字节序列转换为字符序列,这种过程称为解码。
在网络通信中,很多情况下通信双方传达的都就是字符信息。
但就是,字符信息并不能直接从网络的一端传递到另一端,这些字符信息首先需要被转换成一个字节序列,然后才能在网络中传输。
因此,发送方需要进行编码,相应的接收方就要执行解码。
、NET框架中一般常用Encoding类实现编码与解码。
Encoding类位于System、Text命名空间下,该类主要用于对字符集进行编码与解码以及将一种编码格式转换为另一种编码格式。
如果有更详细的需求可以还使用与Encoding类位于同一命名空间下的Encoder与Decoder类来进行编码与解码。
2.、NET提供的从Stream类继承的数据流都有哪些?
文件流()、内存流(MemoryStream)、网络流(NetworkStream)加密流(CryptoStream)。
3.简述对称加密与不对称加密的特点及实现原理。
对称加密:
(1)加密与解密数据使用同一个密钥;
(2)私钥算法以块为单位加密数据,一次加密一个数据块,因此支持数据流。
对称加密算法的优点:
保密强度高,加、解密速度快,适合加密大量数据。
对称加密的缺点:
通信双方使用相同的密钥与IV加密与解密,发送方需要先将密钥与IV传递给接收方。
如果攻击者截获了密钥与IV,也就等于知道了如何解密数据。
不对称加密:
(1)使用一个需要保密的私钥与一个可以对任何人公开的公钥。
用公钥加密的
数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密;
(2)私钥加密算法使用长度可变的缓冲区,因此无法使用流。
不对称加密的优点:
更不容易被攻击。
不对称加密的缺点:
由于无法使用流,因此不适合加密大量数据。
4.什么就是数字签名?
数字签名有什么用途?
在应用程序中,可以利用数字签名实现数据身份验证与数据完整性验证。
数据身份验证就
是为了验证数据就是不就是持有私钥的人发送的;
数据完整性验证则用于验证数据在传输过
程中就是否被修改过。
数字签名的用途:
通过Internet下载文件后,验证下载的文件就是否与原始文件完全相同。
换言之,如果通信双方希望确保信息就是来自对方而不就是来自第三方,需要使用数字签名进
行身份验证。
另外,数字签名还可以防止特定一方否认曾发送过的信息。
第5章
1.仅包含asynC与await关键字的异步方法与用Task、Run调用的异步方法有与不同?
async与await关键字就是C#5、0提供的功能,仅包含async与await关键字的异步方法不会创建新线程,它只就是表示在当前线程中异步执行指定的任务。
而Task、Run方法就是、
NET框架4、5提供的功能,它会在线程池中用单独的线程执行某个任务。
2.把普通方法与异步方法作为任务来执行时,调用方法有何不同?
普通方法要用Task、Run方法去调用,或者用Task、Task<
TResult>
类的构造函数显示创建Task实例,然后再启动。
异步方法不需要用Task、Run方法去调用。
3.Action与Func委托有什么不同?
Action委托封装了不带返回值的方法(有0〜16个输入参数,返回类型为void),Func委托封装了带返回值的方法(有0〜16个输入参数,返回类型为TResult)。
4.有几种创建任务的方式?
有4种方式。
(1)利用Task、Run方法隐式创建与执行任务;
(2)利用async与await关键字隐式创建异步任务;
(3)利用WPF控件的调度器隐式创建与执行任务;
(4)通过显式调用Task或Task<
的构造函数创建任务。
5.在WPF应用程序中有几种可用的定时器?
有3种。
(1)System、Timers、Timer类;
(2)System、Windows、Threading、DispatcherTimer类;
(3)System、Threading、Timer类。
6.简述实现任务的取消功能的机制。
System、Threading、CancellationTokenSource用于创建取消通知,称为取消源。
System、Threading、CancellationToken结构用于传播应取消操作的通知,称为取消令牌。
调用任务的代码在分配任务前,可先用CancellationTokenSource类创建一个取消源。
在调用任务的代码中,可通过取消源的Cancel方法发出取消通知,该方法会将每个取消令牌副本上的IsCancellationRequested属性都设置为true。
执行任务的方法接收到取消通知后,可以终止执行。
第6章
1.TPL支持哪些并行方式?
TPL支持数据并行,任务并行与并行查询(PLINQ)。
2.并行编程中的分区有哪些形式?
按范围分区;
按区块分区;
动态分区;
自定义分区。
3.简述Parallel帮助器类有哪些?
功能分别就是什么?
帮助器类包括ParallelOptions、ParallelLoopState、ParallelLoopResult、CancellationToken与CancellationTokenSource。
ParallelOptions类用于为Parallel类的方法提供操作选项,常用属性有:
CancellationToken、MaxDegreeOfParallelism、TaskScheduler。
ParallelLoopState类用于将Parallel循环的迭代与其她迭代交互。
常用属性与方法有:
IsExceptional属性、IsStopped属性、Break方法、Stop方法。
ParallelLoopResult类用于提供Parallel循环的完成状态,常用属性有:
IsCompleted、LowestBreakIteration。
CancellationTokenSource用于创建取消通知,称为取消源。
CancellationToken结构用于传播应取消操作的通知,称为取消令牌。
4.常用的并发集合类有几种?
【参考解答】ConcurrentBag<
T>
;
ConcurrentQueue<
ConcurrentStack<
ConcurrentDictionary<
TKey,TValue>
。
5.使用Parallel、Invoke方法时,为了能让Action与WPF界面交互,要注意什么问题?
不能使用默认的任务调度程序,而就是通过设置并行选项,将任务调度程序与WPF当前同步上下文关联起来,相关代码如下。
ParallelOptionsoptions=newParallelOptions();
options、TaskScheduler=TaskScheduler、FromCurrentSynchronizationContext();
第7章
1.简要介绍Web服务与WCF有哪些区别与联系。
Web服务就是一种以XML作为数据交换格式、部署在Web服务器上的一种应用程序服务,在Web服务中,可公开被各种客户端程序调用的方法。
WCF就是微软公司推出的符合SOA思想的分布式应用程序技术框架与编程模型,就是建
立在消息通信这一概念基础之上的一个运行时服务系统。
Web服务只就是WCF的其中一部分,除了Web服务外,WCF还包括其她各种服务。
2.简要介绍WCF服务的承载方式及其特点。
WCF服务的承载方式包括:
利用IIS或者WAS承载、利用Windows服务承载、自承载。
其特点如下。
(1)用IIS或者WAS承载:
这就是最常用的一种承载方式,特点就是部署简单,方便。
(2)用Windows服务承载:
用【WCF服务库】模板创建的WCF服务利用Windows进程去承载。
(3)自承载:
指开发人员自己编写代码实现承载WCF的工作。
优点就是实现灵活,需要的环境支持最小。
缺点就是高级宿主管理功能需要自己写代码去实现。
3.什么就是服务协定,什么就是数据协定,分别用哪些特性声明服务协定与数据协定?
服务协定就是指WCF对客户端公开哪些服务。
WCF服务端通过服务协定向客户端公开以下内容:
操作方法、消息交换模式、采用的通信协议以及序列化格式。
服务协定用ServiCeContraCt特性与OperationContraCt特性来共同声明。
数据协定描述的就是消息中包含哪些数据,即规定哪些数据能够被序列化为XML传输到
客户端。
数据协定用DataContraCt特性与DataMember特性来共同声明。
第8章
1.编写基于C/S的HTTP应用程序时,有哪几种实现技术?
各自的特点就是什么?
(1).用可插接式协议实现
可插接式协议用WebRequest类与WebResponse类来实现。
这两个类就是各种与具体的通信协议相关的类的基类,提供了上传、下载等基本方法。
或者说,不论采用的就是哪种通信协议,都可以用这两个对来实现。
(2).用HttpWebRequest与HttpWebResponse实现
HttpWebRequest类与HttpWebResponse类就是针对HTTP而提供的,分别从WebRequest类与WebResponse类继承而来。
(3).用WCF实现
用WCF与基于任务的编程模型实现HTTP应用编程就是面向服务编程中建议的做法。
前两种方式都就是传统的编程模型,在实际项目中,如果用传统的编程模型来实现,除了业务处理之外,很多细节也都需要程序员自己去完成,例如负载平衡、网络监视、安全管理、防范攻击等。
而用WCF来实现,程序员只需要处理业务逻辑即可,其她工作让WCF内部去完成就行了。
2.WCF客户端与服务端的消息交换模式有哪些?
请求/应答模式、单向模式、双工模式。
第9章
1.TCP有哪些主要特点?
(1)一对一通信。
一旦通信双方建立了TCP连接,连接中的任何一方都能向对方发送数据与接收对方发送来的数据。
每个TCP连接只能有两个端点,而且只能一对一通信。
(2)安全顺序传输。
通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同。
(3)通过字节流发送数据。
利用TCP传输数据时,数据以字节流的形式进行传输。
(4)传输的数据无消息边界。
2.解决TCP的无消息边界问题有哪些常用的办法?
(1)发送固定长度的消息。
(2)将消息长度与消息一起发送。
(3)使用特殊标记分隔消息。
3•简述基于任务的异步TCP编程与直接用Thread实现的主要区别。
直接用Thread来实现TCP编程时,就是以多线程为目标来实现的,需要开发人员自己管理多线程,因此开发人员必须熟练掌握多线程实现的所有细节,才能编写出实际的TCP应用程
序。
而基于任务的异步TCP编程就是通过任务来实现TCP编程,用多任务实现时,即使开发人员对多线程、线程池以及资源冲突与负载平衡等所有技术实现细节不太熟悉,一样可以快速编写出实际的TCP应用程序,而且程序的健壮性比直接用多线程来实现要高得多。
4.简要回答用WCF编写TCP服务器端与客户端程序的一般步骤。
使用WCF编写TCP服务器端应用程序的一般步骤如下。
1)创建一个WPF应用程序,在项目中添加WCF服务。
2)在WCF服务接口文件中定义服务端与客户端通信的协定,并实现定义在服务端需要实
现的协定方法。
3)修改服务端配置文件,并启动WCF服务,等待客户端调用并与客户端通信。
4)根据实际情况确定就是否关闭WCF服务。
使用WCF编写TCP客户端端应用程序的一般步骤如下。
1)创建一个WPF应用程序,添加服务引用。
2)实现WCF服务定义在客户端需要实现的协定方法。
3)调用WCF服务,与服务端进行通信。
第10章
1.UDP与TCP的主要区别有哪些?
UDP就是简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。
与
TCP—样,UDP也就是构建于底层IP协议之上的传输层协议。
与TCP相比,UDP具有以下特点。
(1)UDP不但支持一对一通信,而且支持一对多通信。
(2)UDP传输速度比TCP快。
(3)UDP有消息边界,使用UDP不需要考虑消息边界问题。
(4)UDP不确保数据的发送顺序与接收顺序一致。
(5)UDP可靠性不如TCP。
2.什么就是广播?
什么就是多路广播?
两者有什么区别?
广播就是指同时向多个设备发送消息,并且所有子网中的设备都可以接收到发送方发来的消息。
每个广播消息包含一个特殊的IP地址。
广播消息地址分为两种类型:
本地广播与全球广播。
本地广播可以向子网中的所有设备发送广播消息,其她网络不会受到本地广播的影响。
多路广播就是将消息从一台设备发送到本网或全网内选择的设备子集上,即发送到那些
加入指定组播组的设备上。
二者区别:
广播只能向其所在的子网内发送消息,而且就是向子网中的所有设备发送消息没有目的性,不但造成了网络负载,而且资源消耗较高。
而多路广播就是将消息发送到加入到特定组播组内的机器上,消息有目的性,资源消耗不高。
3.简要回答利用UdpClient对象加入与退出多播组的步骤。
在UDP协议中,广播与组播的实现都就是借助于特殊的IP地址实现的。
特别就是组播比较特殊。
对于IPv4来说,多播就是指在224、0、0、0到239、255、255、255的D类IP地址范围内进行广播。
加入多播组时,首选创建UdpClient对象,然后使用JoinMutiCastGroup方法加入组播组。
当退出组播组时,使用UdpClient对象的DropMulticastGroup方法可以退出多播组,参数中指出要退出多播组的IPAddress对象。
4.简要回答用WCF与UDP编写多播程序与用UdpClient类编写多播程序有哪些主要的不同点?
这两种实现方式中,各自的优缺点有哪些?
使用UDP编写多播程序时,均需要将消息发送到特殊的IP地址。
使用UdpClient类编写多播程序时,需要先加入到特定的多播组,然后才能接收来自多播发送端发送的数据。
具体实现时主要就是利用UdpClient类的JoinMutiCastGroup方法加入组播组,发送端利用UdpClient对象的Send方法发送数据到组播地址,接收端利用UdpCIient对象的Receive方法接收数据。
若要退出组播组调用DropMulticastGroup方法即可。
使用WCF与UDP编写多播程序时,需要使用WCF服务定义与实现通信的协定,然后向组播地址发送消息,这样凡就是实现WCF服务定义与实现通信协定的客户端均可以接收到消息。
使用UdpCIient类实现时,主要借助多线程与多任务来实现,易于理解,但就是需要考虑较多的实现细节。
而WCF模式对UDP多播编程进行了进一步的封装,降低了编程的复杂度,更适合分布式环境下的UDP通信程序。
第11章
1.简述事务队列与非事务队列的主要区别。
事务就是以保证数据的完整性与业务逻辑上的一致性为目的,在不破坏数据的正确性与
完整性条件下,为单个逻辑工作而执行的一系列不可分割的操作。
事务允许将一组操作组合到一起。
如果一个操作失败,所有的操作都将失败。
非事务队列就是临时性的,消息保存在内存中,不用事务来保护对消息的操作。
一但服务器发生问题,或者调用方可能出现异常,消息会丢失。
事务队列就是永久性的,消息保存在磁盘中,当服务器当机、重启或崩溃,消息可在系统恢复后被读取。
同时,消息发布、获取与删除都在环境事务范围内,从而确保消息的可靠性。
2.如何利用MSMQ实现双工通信?
由于WCF中的默认排队绑定不支持使用队列进行双工通信,当WCF与MSMQ绑定后,所有服务操作均要求为单向,故MSMQ不支持双工通信。
如果想利用MSMQ实现双工通信,可用两个单向协定来解决。
基本方法如下:
在客户端也定义与实现服务协定,服务端就可以通过代理调用客户端提供的服务。
此时服务端变成了客户端,客户端变成了服务端,从而实现类似双工通信的功能。
3.简述死信队列与病毒消息队列的用途。
【参考解答】死信队列就是用于记录传送失败排队消息的特殊队列,消息传送失败可能就是由于网络
故障、队列已删除、队列已满、身份验证失败或未能在消息生存时间(TTL)内准时传送等原因而引起的。
为了记录消息在传输到目标队列时的失败情况,失败消息将被传输到死信队列中。
死信队列消息可处理传输故障,确保消息未能传递到目标队列时收到通知。
在将消息传送到目标队列后,服务在处理该消息时可能会反复出现故障,病毒消息队列就是用于记录已超出向应用程序传递的最大尝试次数的消息队列。
病毒消息队列可用于解决服务读取消息时不能对消息进行处理,并终止从中读取消息的事务时从队列重复读取的消息的传送。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 网络程序设计 课后 答案