C#网络应用编程 第2版 习题答案作者 马骏 第05章 TCP应用编程习题解答

上传人:w****i 文档编号:94398167 上传时间:2019-08-06 格式:DOC 页数:2 大小:52KB
返回 下载 相关 举报
C#网络应用编程 第2版 习题答案作者 马骏 第05章 TCP应用编程习题解答_第1页
第1页 / 共2页
C#网络应用编程 第2版 习题答案作者 马骏 第05章 TCP应用编程习题解答_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《C#网络应用编程 第2版 习题答案作者 马骏 第05章 TCP应用编程习题解答》由会员分享,可在线阅读,更多相关《C#网络应用编程 第2版 习题答案作者 马骏 第05章 TCP应用编程习题解答(2页珍藏版)》请在金锄头文库上搜索。

1、第16章 TCP应用编程习题05 参考解答1TCP有哪些主要特点?【解答】TCP最主要的特点是:(1)是面向连接的传输层协议;(2)每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信;(3)通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同;(4)数据以字节流的方式传输;(5)传输的数据无消息边界。2简要回答编写基于TCP的服务器端和客户端程序的一般步骤。【解答】使用对套接字封装后的类,编写基于TCP的服务器端程序的一般步骤为:(1)创建一个TcpListener对象,然后调用该对象的Start方法在指

2、定的端口进行监听。(2)在单独的线程中,循环调用AcceptTcpClient方法接受客户端的连接请求,并根据该方法的返回的结果得到与该客户端对应的TcpClient对象。(3)每得到一个新的TcpClient对象,就创建一个与该客户对应的线程,在线程中与对应的客户进行通信。(4)根据传送信息的情况确定是否关闭与客户的连接。使用对套接字封装后的类,编写基于TCP的客户端程序的一般步骤如下:(1)利用TcpClient的构造函数创建一个TcpClient对象。(2)使用Connect方法与服务器建立连接。(3)利用TcpClient对象的GetStream方法得到网络流,然后利用该网络流与服务器

3、进行数据传输。(4)创建一个线程监听指定的端口,循环接收并处理服务器发送过来的信息。(5)完成工作后,向服务器发送关闭信息,并关闭与服务器的连接。3解决TCP的无消息边界问题有哪些常用的方法? 【解答】常用的方法有三种:(1)发送固定长度的消息。适用于信息长度固定的场合。(2)将消息长度与消息一起发送。此方法适用于任何场合。(3)使用特殊标记分隔消息。适用于消息本身不包含特殊标记的场合。4简述异步编程的两种模式。【解答】(1)基于事件的异步设计模式该模式用事件驱动模型实现异步方法。这种模式用单独的线程在后台执行耗时的任务,当后台任务完成时,就自动触发对应的事件。该模式既具有多线程应用程序的优点

4、,同时也隐匿了多线程设计中固有的许多复杂问题。(2)基于IAsyncResult的异步设计模式基于IAsyncResult的异步设计模式通过前缀分别为“Begin”和“End”的两个方法实现开始和结束异步操作,每个Begin方法都必须有一个与其对应的End方法。程序在调用Begin方法后,调用该方法的线程会继续执行其下面的语句,同时该方法用另一个单独的线程执行异步操作,当异步操作完成后,会返回一个实现IAsyncResult接口的对象,循环判断该对象的IsCompleted属性,来决定异步操作是否完成。调用Begin方法后,程序调用End方法来结束异步操作。编写一般异步操作的应用程序时,建议尽

5、量使用基于事件的异步设计模式,因为它能有效地提高项目开发效率和质量,同时也降低了异步编程的复杂度。5如果要在服务器进行监听的同时进行其他操作,异步套接字需要提供那些方法?【解答】异步套接字需要提供那些方法:(1)需要开始接受网络连接请求的方法(2)需要一个处理连接请求并开始发送或接收网络数据的回调方法(3)需要一个结束发送或接收数据的方法6简述利用轮询方式的异步设计模式控制同步方法的实现思路。【解答】.NET Framework提供了一种可以利用委托异步调用任何方法的技术。实现思路:首先,声明一个与要调用的方法具有相同签名的委托,声明后,公共语言运行时就会自动为该委托定义BeginInvoke

6、方法和EndInvoke方法。然后,调用BeginInvoke方法开始异步执行,该方法会立即返回IasyncResult类型的接口,从用户界面的服务线程中进行异步调用时,可以利用该接口的IsCompleted属性来通过轮询方式检查异步调用是否完成。在轮询过程中,BeginInvoke方法在ThreadPool中创建的线程会继续执行异步方法。程序调用BeginInvoke后,会继续执行BeginInvoke方法后面的代码,而不是等待异步调用完成。最后,调用委托的EndInvoke方法结束异步操作。如果异步调用尚未完成,则EndInvoke会一直阻止调用线程,直到异步调用完成。由于有可能会引起调用EndInvoke方法的线程阻塞,所以一般不要从服务于用户界面的线程直接调用该方法,否则会在异步操作完成前,给用户一个界面无反应的错觉。为了使界面操作流畅,可以将上面的语句改为用其他线程执行。3

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号