ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:178.72KB ,
资源ID:9176677      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9176677.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络编程实用教程课后习题.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络编程实用教程课后习题.docx

1、网络编程实用教程课后习题第一章 网络编程基础1.什么是线程,什么是进程?答:进程 是处于运行过程中的程序实例, 是操作系统调度和分配资源的基本单位。 一 个进程实体由程序代码、数据和进程控制块三部分构成。 线程 是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必 不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。2.描述网络应用程序的一般组成。为什么说应用层协议是在应用程序中实现的 ?答:从功能上, 可以将网络应用程序分为两部分, 一部分是专门负责网络通信的模块, 它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据

2、信息的交换。另 一部分是面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输 过来的数据进行加工,这两部分模块相互配合,来实现网络应用程序的功能。2. 实现网间进程通信必须解决哪些问题?答:(1 )网间进程的标识问题;(2)如何与网络协议栈连接的问题; (3)协议的识别 问题;(4)不同的通信服务的问题4.说明 TCP/IP 中,端口的概念和端口的分配机制。答:端口是 TCP/IP 协议族中,应用层进程与传输层协议实体间的通信接口。 TCP/IP 协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于 TCP,或者 UDP ,将它们的全部 65535 个端口

3、号分为保留端口号和自由端口号 两部分。保留端口的范围是 0 1023 ,又称为众所周知的端口或熟知端口( well-known port ),其余的端口号, 1024-65535 ,称为自由端口号,采用本地分配,又称为动态分 配的方法。总之, TCP或 UDP 端口的分配规则是:端口 0:不使用,或者作为特殊的使用;端口 1-255 :保留给特定的服务, TCP和 UDP 均规定,小于 256 的端口号才能分配给网上著名的服务;端口 256-1023 :保留给其他 的服务,如路由;端口 1024-4999 :可以用作任意客户的端口;端口 5000-65535 :可以用作用户的服务 器端口。5.

4、什么是网络应用进程的网络地址?说明三元组和五元组的概念。答:应用层进程地址 = (传输层协议,主机的 IP 地址,传输层的端口号) ,它标识了 因特网中,进程间通信的一个端点,也把它称为进程的网络地址。(传输层协议,主机的 IP 地址,传输层的端口号) ,这样一个三元组,叫做一个半相关 (half-association )。(传输层协议, 本地机 IP 地址,本地机传输层端口, 远地机 IP 地址, 远地机传输层端口 ), 五元组称为一个全相关 (association )。即两个协议相同的半相关才能组合成一个合适的 全相关,或完全指定一对网间通信的进程。6.举例说明面向消息的协议与基于流动

5、协议有什么不同。 答:例如甲向乙发送三个消息,分别是: 128 、64 和32 字节。 面向消息的协议中, 如果接受缓冲区是 256 字节,足以接收 3 条消息, 且这三条消息 全部达到。乙仍然需要发送 3 条读取消息。分别返回 128 、64 、32 字节,而不用一次读 取来调用者单个数据包。基于流的消息协议中,在接收端乙的堆栈把所有进来的消息数据包聚集在一起,放入 堆栈,等待应用进程读取。进程发送读取命令,指定了进程接收缓冲区,如果进程缓冲 区有 256 字节,系统马上返回全部 224 字节。7.TCP 提供的服务有哪些特征? 答:应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错

6、、无丢失、无 重复或失序)全双工的流传输服务。 允许网络中的两个应用程序建立一个虚拟的链接,在任何一个方向 上发送数据,把数据当作一个双向字节流进行交换,最后终止连接。8.简要说明三类网络编程。答:基于 WWW 应用的网络编程技术 ,包括所见即所得的网页制作工具,和动态服务 器页面的制作技术。.NET 平台有四组产品 开发工具 专用服务器 Web 服务。 设备。 MS.NET 顺应了软件工业的趋势,包括 4 个方面: 分布式计算 组件化 企业级别的服务 WEB 范型转移。 .NET 平台由三层软件构成 顶层是全新的开发工具 VS.NET, 中间 层包括三部分: .NET 服务器、 .NET 服

7、务构件和 .NET 框架。 底层是 WINDOWS 操作 系统。Web 服务 是松散耦合的可复用的软件模块,在 Internet 上发布后,能通过标准的 Internet 协议在程序中访问,具有以下的特点: (1)可复用( 2)松散耦合( 3)封装了 离散( 4)Web 服务可以在程序中访问( 5)Web 服务在 Internet 上发布 9说明 C/S 模式的概念、工作过程和特点。答:C/S 模式即客户机 / 服务器模式,是应用程序最常用的通信模式。 服务器的工作过程是 :(1 )打开一通信通道,并告知服务器所在的主机,它愿意在某一 公认的地址上接收客户请求。 (2)等待客户的请求到达该端口

8、。 ( 3)服务器接收到服务 请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一 个新进程或新线程来处理这个客户请求(如 UNIX 系统中用 fork 、exec )。服务完成后, 关闭此新进程与客户的通信链路,并终止。 (4 )返回第二步,等待并处理另一客户请求。(5)在特定的情况下,关闭服务器。客户方工作过程 :(1)打开一通信通道,并连接到服务器所在主机的特定监听端口。 (2)向服务器发送请 求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。 (3)请求结束后,关闭通信通道并终止。特点:( 1)客户和服务器都是软件进程, C/S 模式是网络上

9、通过进程通信建立分布式应 用的常用模型。(2)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现 在软件结构和工作过程上。 ( 3)对等性:客户和服务器必有一套共识的约定,必与以某 种应用层协议相联,并且协议必须在通信的两端实现。 (4 )服务器的被动性:服务器必 须先行启动,时刻监听,及时服务,只要有客户请求,就立即处理并响应,回传信息。 但决不主动提供服务。 (5 )客户机的主动性:客户机可以随时提出请求,通过网络得到 服务,也可以关机走人,一次请求与服务的过程是由客户机首先激发的。(6)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多 个服务

10、器。(7)分布性与共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。 10.说明用户和客户机,服务器和服务器类计算机的区别。答:“客户” (client) 和服务器都指的是应用进程,即计算机软件。“用户” (user) 指的是使用计算机的人。服务器( server )这个术语来指那些运行着的服务程序。服务器类计算机( server-class computer )这一术语来称呼那些运行服务器软件的强大 的计算机。第二章 UNIX 套接字编程接口2.实现套接字编程接口的两种方式是什么? 答:一种是在操作系统的内核中增加相应的软件来实现,一种是通过开发操作系统之外 的函数库来实现。4

11、.什么是套接字?答:是应用程序通过网络协议栈进行通信交互的接口。5.说明套接字特点。 答:(1)通信域。套接字通常只和同一域中的套接字交换数据。如果数据交换要穿越 域的边界,就一定要执行某种解释程序。 ( 2)套接字有三种类型,流式、数据包和原始4)使用确定的 IP 地址套接字。(3)套接字由应用层创建,并为其服务,而后被释放 和传输层端口号6.说明套接字应用场合。答:(1)不管是采用对等模式或者客户机 / 服务器模式,通信双方的应用程序都需要 开发。( 2)双方所交换数据的结构和交换数据的顺序有特定的要求,不符合现在成熟的 应用层协议,甚至需要自己去开发应用层协议,自己设计最适合的数据结构和

12、信息交换 规程。7.说明本机字节顺序和网络字节顺序的概念。答:在具体计算机中的多字节数据的存储顺序,称为本机字节顺序。多字节数据在网 络协议报头中的存储顺序,称为网络字节顺序。8.流式套接口的工作过程9.什么是阻塞问题?如何对应?答:阻塞是指一个进程执行了一个函数或者系统调用, 该函数由于某种原因不能立即完 成,因而不能返回调用它的进程,导致进程受控于这个函数而处于等待的状态,进程的 这种状态称为阻塞。利用 UNIX 操作系统的 FORK()系统调用,编制多进程并发执行的服 务器程序。第三章 Windows 环境的网络编程1.试述 WinSock 1.1 的特点。答:(1) WinSock 1

13、.1 全面继承了 Berkeley Sockets 规范(2)数据库函数。其中六个采用 getXbyY() 的形式,大多要借助网络上的数据库来获得 信息,(3)WinSock 1.1 扩充了 Berkeley Sockets 规范(4)WinSock 1.1 只支持 TCP/IP 协议栈2.WinSock 规范与 Berkeley 套接口的区别是什么? 答:a.套接口数据类型和该类型的错误返回值b.select() 函数和 FD_* 宏。在 Winsock 中,使用 select() 函数时,应用程序应坚持用 FD_XXX 宏来设置,初始化,清除和检查 fd_set 结构。c.错误代码的获得

14、在 Winsock 中,错误代码可以使用 WSAGetLastError() 调用得到。d.指针所有应用程序与 Windows Sockets 使用的指针都必须是 FAR 指针。e.重命名的函数。(1 )close() 改变为 closesocket() (2)ioctl() 改变为 ioctlsocket()f.Winsock 支持的最大套接口数目 在 WINSOCK.H 中缺省值是 64 ,在编译时由常量 FD_SETSIZE决定。g.头文件 Berkeley 头文件被包含在 WINSOCK.H 中。一个 Windows Sockets 应用程 序只需简单地包含 WINSOCK.H 就足够

15、了。 h. Winsock 规范对于原始套接口的支 持.i.Winsock 规范对于原始套接口和消息驱动机制的支持。体现在异步选择机制、异步 请求函数、阻塞处理方法、错误处理、启动和终止等方面。3.WinSock 的注册和注销过程答 : 注 册 过 程 : 调 用 WSAStartup 的 格 式 : int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); wVersionRequested :指定要使用的 WinSock 的最高版本号, lpWSAData 用来返回 WinSockAPI 实现细节的 WSAData 结构变

16、量指针。注销过程:应用程序必须调用 WSACleanup() 函数,来解除与 Winsock.DLL 库的绑定, 释放 Winsock 实现分配给应用程序的系统资源, 中止对 Windows Sockets DLL 的使用。 int WSACleanup ( void );4.说明 WSAStartup 函数初始化过程。(1)查找 WinSock.DLL 文件,如果有 WinSock 实现,则调入相关信息。若无,则初 始化失败。返回错误信息。 ( 2)。确认版本号。(3)建立 WinSock 同应用程序的联系。 (4)函数创建成功, 在 WSAData 结构中返回许多信息, 否则,通知用户“初

17、始化失败”。5.画框图说明同步套接字的 send 函数的初始化过程。第四章1. 为什么说 MFC 是一个编程框架?它提供了哪些相应的工具?MFC 应用程序框架,简称 MFC 框架,是由 MFC (Microsoft Foundation Class Library )中的各种类结合起来构成的。 MFC 框架从总体上定义了应用程序的轮廓,并提 供了用户接口的标准实现方法,程序员只须通过预定义的接口把具体应用程序特有的东 西填入这个轮廓,就能建立 Windows 下的应用程序。Microsoft Visual C+ 提供 了 相应的 工 具 来完成 这个 工 作:用应 用程序 向 导 (AppWi

18、zard )可以生成应用程序的骨架文件(代码和资源等) ;用资源编辑器可以直观 地设计用户接口;用类向导( ClassWizard )可以将代码添加到骨架文件;用编译器可以 通过类库实现应用程序特定的逻辑。 MFC 实现了对应用程序概念的封装,把类、类的继 承、动态约束、类的关系和相互作用等封装起来。2.MFC 类库封装了哪些内容?1)对 Win32 应用程序编程接口的封装2)对应用程序概念的封装3)对 COM/OLE 特性的封装4)对 ODBC 功能的封装3.典型的 MDI 应用程序 AppWizard 会自动创建一系列文件,如果工程的名字是 My, 这些文件的名字是什么?头文件 My.h

19、,实现文件 My.cpp, 资源文件 My.rc 和模块定义文件 My.def4.说明构成应用程序的对象之间的关系。这里,用图的形式可直观地表示所涉及的 MFC 类的继承或者派生关系,如图 4.2 所示图 4.2 构成 MDI 应用程序的各对象之间的派生关系5.说明 MFC 对象和 Windows 对象的关系。所谓 Windows 对象是 Win32 下用句柄表示的 Windows 操作系统对象;所谓 MFC 对 象是 C+ 对象,是一个 C+ 类的实例。两者有很大的区别,但联系紧密。以窗口对象为例:图 4.3 MFC 的 CWnd 类窗口对象和 Windows 的窗口对象的关系6.说明 MF

20、C 对象和 Windows 对象的区别。(1)对应的数据结构不同(2)所处的层次不同(3)创建的机制不同(4)二者转换的方式不同(5)使用的范围不同(6)销毁的方法不同7.CObject 类具有哪些特性?CObject 类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化 的支持,对象诊断输出,等等。8.说明应用程序、文档模板、边框窗口、视图和文档等的创建关系。 P121 答:应用程序是全局对象,在启动程序之前构造;应用程序创建文档模板;文档模板创 建文档和边框窗口;边框窗口创建试图。9.说明 WinMain 入口函数的流程。 P12310.消息循环的过程是什么? P12411

21、.应用程序的退出过程是什么?面以单击主窗口的关闭按钮为例,来说明应用程序退出的过程1) 用户单击主窗口的关闭按钮,导致发送 MFC 标准命令消息 ID_APP_EXIT。MFC 调用 CwinApp :OnAppExit() 来完成对该命令消息的缺省处理,主要是向主窗口发 送 WM_CLOSE 消息。2) 主窗口处理 WM_CLOSE 消息。3) 收到 WM_QUIT 消息后,退出消息循环,进而退出整个应用程序。第五章一、 MFC 提供的两个套接字类是什么?答: CAsyncSocket 类, CSocket 类。二、为什么说 CAsyncSocket 类是在很低的层次上对 Windows S

22、ockets API 进行了封 装?答:它的成员函数和 Windows Sockets API 的函数调用直接对应。 一个 CAsyncSocket 对象代表了一个 Windows 套接字。它是网络通信的端点。除了把套接字封装成 C+ 的 面向对象的形式供程序员使用以外,这个类唯一所增加的抽象就是将那些与套接字相关 的 Windows 消息变为 CAsyncSocket 类的回调函数。三、为什么说 Csocket 类是对 Windows Sockets API 的高级封装?答: CSocket 类继承了 CAsyncSocket 类的许多成员函数,用法一致。 CSocket 类的高 级表现在三

23、个方面:(1) CSocket 结合 archive 类来使用套接字。(2) CSocket 管理了通信的许多方面,如字节顺序问题和字符串转换问题。(3 )CSocket 类为 Windows 消息的后台处理提供了阻塞的工作模式。四、使用 CAsyncSocket 类的一般步骤是什么?序号服务器( Server )客户机( Client )1/ 构建一个套接字 CAsyncSocket sockSrvr;/ 构建一个套接字 CAsyncSocket sockClient;2/ 创建 SOCKET 句柄,绑定到指 定的端口 sockSrvr.Create(nPort);/ 创建 SOCKET 句

24、柄,使用默认参数 sockClient.Create();3/ 启动监听,时刻准备接受连接 请求sockSrvr.Listen();4/ 请求连接到服务器sockClient.Connect(strAddr,nport);5/ 构造一个新的空的套接字 CasyncSocket sockRecv;/ 接 收 连 接 sockSrvr.Accept(sockRecv);6/ 接收数据 sockSrvr.Receive(pBuf,nLen);/ 发送数据 sockClient.Send(pBuf,nLen);7/ 发送数据 sockSrvr.Send(pBuf,nLen);/ 接收数据sockCli

25、ent.Receive(pBuf,nLen);8/ 关闭套接字对象 sockSrvr.Close();/ 关闭套接字对象 sockClient.Close();五、CAsyncSocket 类可以接受并处理哪些消息事件?当这些网络事件发生时, MFC 框 架作何处理?答: MFC 套接字对象可以接受并处理的六种网络事件:(1) FD_READ 事件通知:通知有数据可读。(2) FD_WRITE 事件通知:通知可以写数据。(3) FD_ACCEPT 事件通知:通知监听套接字有连接请求可以接受。(4) FD_CONNECT 事件通知:通知请求连接的套接字,连接的要求已被处理。(5)FD_CLOSE

26、 事件通知:通知套接字已关闭。(6) FD_OOB 事件通知:通知将有带外数据到达处理:按照 Windows 的消息驱动机制, MFC 框架应当把消息发送给相应的套接字对象, 并调用作为该对象成员函数的事件处理函数。事件与处理函数是一一映射的。在 afxSock.h 文件中的 CAsyncSocket 类的声明中,定义了与这六个网络事件对应的事 件处理函数。virtual void OnReceive(int nErrorCode);对应FD_READ 事件virtual void OnSend(int nErrorCode);对应FD_WRITE 事件virtual void OnAccep

27、t(int nErrorCode);对应FD_ACCEPT事件virtual void OnConnect(int nErrorCode);对应FD_CONNECT 事件virtual void OnClose(int nErrorCode);对应FD_CLOSE 事件virtual void OnOutOfBandData(int nErrorCode);对应FD_OOB 事件六、 CSocket 类如何通过 Carchive 对象来进行数据传输?答:使用 CArchive 对象和套接字一起进行数据传输工作,必须使用流式套接字七、说明 CSocket 类的编程模型。答:下面给出针对流式套接字

28、的 CSocket 类的编程模型1服务器端(1)CSocket sockServ; / 创建空的服务器端监听套接字对象。/ 用众所周知的端口,创建监听套接字对象的底层套接字句柄。(3) sockServ.Listen();(4) CSocket sockRecv; sockServ.Accept( sockRecv); 套接字对象。2) sockServ.Create( nPort );/ 启动对于客户端连接请求的监听。/ 创建空的服务器端连接套接字对象。/ 接收客户端的连接请求,并将其他的任务转交给连接5)CSockFile* file ;file = new CSockFile( &soc

29、kRecv); / 创建文件对象并关联到连接套接字对象 (6) CArchive* arIn, arOut;arIn = CArchive(&file, CArchive:load); / 创建用于输入的归档对象,arOut = CArchive( &file, CArchive:store); / 创建用于输出的归档对象。/ 归档对象必须关联到文件对象。(7)arIn dwValue; / 进行数据输入。adOut dwValue; / 进行数据输入。adOut dwValue; / 进行数据输出。输入或输出可以反复进行。(7) sockClient.Close(); / 传输完毕,关闭套接字对象。八、说明使用 MFCAppWizard 创建客户机端应用程序框架具体的步骤? 答:1使用 MFC AppWizard 创建客户端应用程序框架。 创建的程序是一个基于对话框的 Win32 应用程序,将自动创建两个类,应用程序类 CTalkcApp ,对应的文件是 talkc.h 和 talkc.cpp ;对话框类 CTalkcDlg ,对应的文件是 talkcDlg.h 和 talkcDlg.cpp 。支 持 Windows Socket ,使用 共享 的 DLL 实 现 MFC42.DLL 。2为

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1