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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《网络程序设计》期末总复习最新版苏大.docx

1、网络程序设计期末总复习最新版苏大前言:陆老师:“附件中为经修改、增添内容后的最新网络程序设计总复习题,请 转发全班同学,以复习这个为准,考试也已这个为准。另外,考试的读程序部分,要求能读懂Linux Berkeley Socket编写的程序、Windows Winsocl编写的程序,其中Windows MFC程序要求能读懂书上的对话框界面的Talkc程序中的各个类的程序编写,也请转告各位同学。祝你们全班都能考个好成绩。陆建德,即日”第一章 网络编程基础1.实现网间进程通信必须解决哪些问题?答:(1)网间进程的标识冋题;(2) 如何与网络协议栈连接的问题;(3) 协议的识别问题;(4) 不同的通

2、信服务的问题2.说明TCP/IP中,端口的概念和端口的分配机制。答:端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。 TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部 分。保留端口的范围是01023,又称为众所周知的端口或熟知端口( well-known port),其 余的端口号,1024-65535,称为自由端口号,采用本地分配,又称为动态分配的方法。总之,TCP或UDP端口的分配规则是: 端口 0:不使用,或者作为特殊的使用;端口 1-255:保留给特

3、定的服务, TCP 和 UDP 均规定,小于 256 的端口号才能分配给网 上著名的服务;端口 256-1023:保留给其他的服务,如路由;端口 1024-4999:可以用作任意客户的端口;端口 5000-65535:可以用作用户的服务器端口。3.什么是网络应用进程的网络地址?说明三元组和五元组的概念。答:(传输层协议,主机的 IP 地址,传输层的端口号)标识了因特网中,进程间通信的一个端 点,也把它称为网络应用进程的网络地址。(传输层协议,主机的 IP 地址,传输层的端口号) ,这样一个 三元组 ,叫做一个半相关 ( half-association)。(传输层协议,本地机 IP 地址,本地

4、机传输层端口,远地机 IP 地址,远地机传输层端口 ), 这样一个五元组称为一个全相关(association)。即两个协议相同的半相关才能组合成一个合适 的全相关,或完全指定一对网间通信的进程。4.举例说明面向消息的协议与基于流动协议有什么不同。 答:例如甲向乙发送三个消息,分别是: 128、64 和 32字节。面向消息的协议 中,如果接受缓冲区是 256 字节,足以接收 3条消息,且这三条消息全部 达到。乙仍然需要发送 3 条读取消息。分别返回 128、64、32字节,而不用一次读取来调用者 单个数据包。基于流的消息协议 中,在接收端乙的堆栈把所有进来的消息数据包聚集在一起, 放入堆栈,

5、等待应用进程读取。 进程发送读取命令, 指定了进程接收缓冲区, 如果进程缓冲区有 256 字节, 系统马上返回全部 224 字节。5说明 C/S 模式的概念、工作过程和特点。答:C/S模式即客户机/服务器模式,是应用程序最常用的通信模式。服务器的工作过程是: ( 1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公 认的地址上接收客户请求。 ( 2)等待客户的请求到达该端口。 (3)服务器接收到服务请求,处 理该请求并发送应答信号。 为了能并发地接收多个客户的服务请求, 要激活一个新进程或新线程来处理这个客户请求(如 UNIX系统中用fork、exec)。服务完成后,关闭此新进程与客户

6、的通信链路,并终止。 ( 4)返回第二步,等待并处理另一客户请求。 ( 5)在特定的情况下,关闭服务器。客户端的工作过程:( 1)打开一通信通道, 并连接到服务器所在主机的特定监听端口。 ( 2) 向服务器发送请求报文, 等待并接收应答; 继续提出请求, 与服务器的会话按照应用协议进行。( 3)请求结束后,关闭通信通道并终止。特点:( 1)客户和服务器都是软件进程, C/S 模式是网络上通过进程通信建立分布式应用的常 用模型。( 2)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现 在软件结构和工作过程上。( 3)对等性:客户和服务器必有一套共识的约定,必与以某种应用层

7、协议相联,并且协 议必须在通信的两端实现。( 4)服务器的被动性:服务器必须先行启动,时刻监听,及时服务,只要有客户请求, 就立即处理并响应,回传信息。但决不主动提供服务。( 5)客户机的主动性:客户机可以随时提出请求,通过网络得到服务,也可以关机走人, 一次请求与服务的过程是由客户机首先激发的。( 6)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多 个服务器。( 7)分布性与共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。第二章 UNIX 套接字编程接口1.实现套接字编程接口的两种方式是什么?答:一种是在操作系统的 内核中增加相应的软件 来实现,一种

8、是通过 开发操作系统之外的函数 库来实现。 UNIX 使用前者, Windows 使用后者。2套接字通信与 UNIX 操作系统的输入 /输出的关系是什么?答 : (p.29)Unix 操作系统对文件和所有其他的 I/O 设备采用一种统一的操作模式,就是“打开 -读-写- 关闭”的 I/O 模式,套接字编程接口也被纳入 Unix 操作系统的传统输入输出概念的范畴。在 Unix 的实现中,套接字是完全与其它 I/O 集成在一起的。 操作系统和应用程序都将套接字编程 接口也看做一种 I/O 机制,体现在:( 1)操作的过程类似,套接字沿用了大多数 I/O 所使用的“打开 -读-写 -关闭”模式,先创

9、 建套接字,然后使用它,最后将它删除;(2)操作方法类似,使用描述符,先申请生成一个套接字,系统返回一个描述符,在调用 有关套接字进行网络数据传输时,就将这个描述符作为参数;(3)使用的过程的名字也类似,如接收网络数据与发送网络数据用 read和write过程。3.什么是套接字?说明套接字特点。 答:套接字是应用程序通过网络协议栈进行通信交互的接口。套接字特点是:(1)通信域 。套接字通常只和同一域中的套接字交换数据。如果数据交换要穿越域的边 界,就一定要执行某种解释程序。(2)套接字有 三种类型 :流式、数据报和原始套接字 。(3)套接字由应用层 创建,并为其 服务,而后被 释放。( 4)使

10、用确定的 IP 地址和传输层端口号 。4.说明主机字节顺序 和网络字节顺序 的概念。答: 不同计算机中,存放多字节值的顺序不同,有的先低后高,有的先高后低。具体计算机中 的多字节数据的存储顺序称为主机字节顺序。在网络协议中,对多字节数据在网络协议报头中的存储顺序称为网络字节顺序。 在设计网络应用程序时,应注意两种字节顺序的转换:在网络应用程序发送时,应将主机字节顺序的 IP地址和端口号分别用 htonl()和htons()转换为网络字节顺序,设置到网络协议报头的对应字段中。在网络应用程序 接收时,应将网络协议报头对应字段中的网络字节顺序的 IP 地址和端口 号分别用ntohl()和 ntohs

11、(转换为主机字节顺序,赋值到本机变量和内存中。5.数据报套接字的编程基本步骤答:数据报也即无连接套接字有两种模式:(1)对等模式:(2)C/S 模式:6.原始套接字的编程基本步骤原始套接字编程步骤如下:(1) 采用恰当的协议标志,创建原始套接字句柄;(2) 根据需要设置套接字的选项;(3) 调用connect和bind函数来绑定对方和本地地址;(4) 发送数据包、接收数据包;(5) 用完后,关闭套接字。7.服务器端和客户机端 操作流式套接口的工作过程。见下图。客户端 略器端肝盅般接字 肝豔套接字8.利用Unix操作系统的fork()系统调用,写出编制多进程并发执行服务器程序 的基本编程框架。

12、在服务器程序中用fork()创建子进程,对于每一个客户端,用一个专门的进程为它服务, 通过进程的并发执行,来实现对多个客户机的并发访问,基本的编程框架如下:listenfd =5ocket(.t;v * e v v vbind(listenfd,); listentlistenfdXISTENQ); for(; ;)connfd = acceptllistenfd,);父进程if (pld = fork()= 0)( closefl istenfd); do_it( connfd); close(connfd); exit(O);子进程close(connfd); 父进程第三章 Windows

13、 环境的网络编程1.WinSock 规范与 Berkeley 套接口的区别是什么?答:(a)套接口数据类型 和该类型的错误返回值(b)select()函数和FD_*宏。在 Win sock中,使用select(函数时,应用程序应坚持用FD_XXX宏来设置,初始化,清除和检查 fd_set结构。(c) 错误代码的获得 在Win sock中,错误代码可以 使用WSAGetLastError()调用得到。(d)指针:所有应用程序与 Windows Sockets使用的指针都必须是FAR指针。(e)重命名的函数:close()改变为 closesocket,ioctl()改变为 ioctlsocket

14、()(f)Winsock 支持的 最大套接口数目 在 WINSOCK.H 中缺省值是 64,在编译时由常量 FD_SETSIZE 决定。(g)头文件: 原来Berkeley套接字的多个头文件现在被包含在 Win sock的一个头文件 中:对 Windows Sockets1.1的应用程序,只需简单地包含 winsock.h就足够了,对 Win dows Sockets2.x的应用程序,只需简单地包含 winsock2.h就行了。(h)Winsock 规范对于 原始套接口的支持 。(i) Win sock规范对于原始套接口和消息驱动机制的支持。 体现在异步选择机制、异步请 求函数、阻塞处理方法、

15、错误处理、启动和终止 等方面。2.Win Sock的注册和注销的过程答:注册过程:在Win Sock程序的开始处,要调用WSAStartup,其格式:int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );其中,wVersio nRequested指定要使用的 Win Sock的最高版本号, lpWSAData: 用来返回 WinSockAPI 实现细节的 WSAData 结构变量指针。2注销过程:Win Sock应用程序结束前,必须调用WSACleanup()函数,其格式为:int WSACleanup ( void );以

16、解除与Win sock.DLL库的绑定,释放Win sock实现分配给应用程序的系统资源,中止 对 Windows Sockets DLL 的使用。3.简要说明Unix/Linux操作系统和 Windows操作系统对套接子网络编程接口的两种实现方 式,这两种实现方式的差别体现在网络编程时有什么不同?答:要想实现套接字编程接口,可以采用两种实现方式: 一种是Unix/Linux的方法,在操作系统的内核中增加相应的软件来实现,在BSD Unix及起源于它的操作系统中,套接字函数是 操作系统本身的功能调用,是操作系统内核的一部分。另一种是Windows的方法,通过开发 操作系统之外的winsock函

17、数库来实现,其中每个函数具有与Unix套接字函数相同的名字与 参数,这样,套接字库就能向没有本机套接字的计算机上的应用程序提供套接字编程接口。这两种套接字实现方式的差别使得后者(Windows操作系统)需要在编的程序开始语句 中先要装载并初始化 winsock动态链接库(使用 WSAStartup函数),在程序结束前需要卸载 和注销winsock动态链接库(使用 WSACleanup函数)。而前者(Unix操作系统)则完全不需要 这两个函数做初始化和卸载注销工作。4.画框图说明同步套接字的send函数的执行流程注意:buf是用户进程的发送缓冲区,而 SYSBUF是系统套接字的数据发送缓冲区第四

18、章 MFC编程1.说明构成应用程序的对象之间的关系。(有哪些对象以及各对象之间的关系)这里,用图的形式可直观地表示所涉及的 MFC类的继承或者派生关系,如下图所示2.简述典型MDI (多文档)界面的MFC应用程序Test所包含的各个类及其基本功能。 答:(1)应用程序类(CTestApp),派生于CWinApp,负责应用程序的初始化、运行和结束。(2) 主边框窗口类(CMainFrame),由CMDIFrameWnd派生,用于管理菜单、工具条、加 速键、文档边框窗口、视图窗口等,协调半模式状态等。(3) 文档边框窗口类(CChildFrame),由CMDIChildWnd派生,MDI应用程序用

19、文档边框 窗口来包含视图窗口。(4)文档类(CTestDoc),从CDocument类派生,用来管理数据。视图窗口通过文档对象 来访问和更新数据。(5)视图类(CTestView),从CView类或其它派生类派生。视图和文档相关联,在文档 和用户之间起中介作用。(6)文档模板类(CMultiDocTemplate )。MDI应用程序通过文档模板类对象建立文档边框 窗口类对象、文档类对象、视图类对象三者的联系,管理这三个对象的创建。3.说明MFC对象和 Windows对象的关系。所谓Windows对象是 Win32下用句柄表示的 Windows操作系统对象;所谓 MFC对象是C+对象,是一个C+

20、类的实例。两者有很大的区别,但联系紧密。抽象,咼层封装mbWnd 其他成员变量各种成员函数以窗口对象为例: 底层对象窗口句柄 Windows的窗口对象CWnd类是对于Windows 的窗口对象的封装CWnd 类MFC的CWnd类窗口对象和 Windows的窗口对象的关系4.说明MFC对象和 Windows对象的区别。(p.109 -p.110)(1)对应的数据结构不同(2)所处的层次不同(3)创建的机制不同(4)二者转换的方式不同(5)使用的范围不同(6)销毁的方法不同5.CObject类具有哪些特性? p.116答:CObject类有很多有用的特性:1对运行时类信息的支持;2对动态创建的支持

21、;3对序列化的支持;4对象诊断输出,等等。6.说明应用程序、文档模板、边框窗口、视图和文档等的创建关系。p.121 (创建的前后顺序)答:应用程序是全局对象,在启动程序之前构造;2应用程序创建文档模板;3文档模板创建文档和边框窗口;4边框窗口创建视图。7.MFC 应用程序的执行分为哪三个阶段?每个阶段主要做什么? 答: MFC 应用程序的执行分为三个阶段:( 1)应用程序启动和初始化阶段:MFC程序在该阶段(主要在应用程序类的Initlnstance()中)创建MFC对象和 Windows对 象、建立各种对象之间的关系,并把窗口显示在屏幕上;( 2)与用户交互阶段:MFC 程序在该阶段会产生各

22、种消息,经主程序的消息循环发送到操作系统,操作系统找 到相应类中该消息对应的消息处理回调函数,执行用户程序的各种交互响应功能;( 3)程序退出和清理阶段:MFC程序在该阶段,关闭窗口、销毁所创建的 Windows对象和MFC对象。8.以一个SDI界面的应用程序Test为例,说明该MFC程序由哪几个类构成,简述其启动、 运行、退出的工作过程。答:以一个SDI界面的应用程序Test为例,该MFC应用程序由应用程序类 CTestApp、框架 窗口类CMa in Frame、文档类CTestDoc、视图类CTestView组成,其启动、运行、退出过程如 下图所示,同样经历上题所述的三个阶段。在阶段(

23、1)应用程序启动和初始化阶段:1先实例化CTestApp类的应用程序全局对象theApp;2然后启动执行 WinMain() ,该函数在隐藏的 MFC 框架程序中;3在WinMain()中,该函数先取得本应用程序对象的指针 pApp,此后会执行AFX内部初始化 AfxWinInit() 、应用程序全局初始化 InitApplication() ,然后,执行该应用程序实例对象 自己特定的初始化 InitInstance(), 用户在此可重载该虚拟函数,做诸如创建文档模板、框架 窗口、文档、视图 , 建立它们之间的关联、显示窗口、更新窗口等窗口程序初始化工作;然后,在WinMain()中执行消息循

24、环Run(),等待接收消息。在阶段(2)与用户交互阶段:用户操作程序运行时会产生各种消息, 由主程序WinMain()中执行的消息循环Run(),会接收、转换、发送这些消息到操作系统,操作系统找到相应类中这个消息对应的消息处理回 调函数,执行各种消息的处理,作出与用户交互的响应。在阶段(3)程序退出和清理阶段:1如用户单击主窗口的关闭按钮,会 产生ID_APP_EXIT消息,相应执行消息处理函数 CWinApp:OnAppExit(),会向主窗口发送 WM_CLOSE 消息;2主窗口收到 WM_CLOSE 消息,相应执行消息处理函数 CFrameWnd:OnClose(),在该函数中会处理各类

25、边框窗口的关闭,还涉及到关闭相关的文档、销毁相关的窗口 ,关闭窗口后,发送WM_QUIT消息;3在 Win Mai n()中执行的消息循环Run()中收到 WM_QUIT 消息后,则执行 退出处理函数ExitInstance(),用户可重载此函数,如删除自己的对象(注意:MFC可以自动 删除标准对象,如文档、视图和窗口框架等),退出消息循环,进而退出整个 MFC应用程序。例:一个SDI界面的MFC程序的运作CTcst4ip thcApp:牯应用程序对彖全局变聚class CMiaiiiFrame: public CFrameWnd )1 Xj息Ji蓉成贡函_ 屮 ria盟 CTetDoc: p

26、ublic CDocumetit :呻鼻二二:J-乂 | Baima I a I k k 4 I I I k a k i m a i. 沛農扯_ 程 覺画葱 i视閤类 class CTestVicw: public CVicw ;消農吐呼戍址由虽.I隐嚴的MFE类庫框架代码(jwinMaij)即WinMnla)T 御 tWhiMainO AfkWinMain(); /整个程序入口 i柱 AfxWiiiMainfX 斤 ) CWifiTread* pTliread = AfiGetThreadQ; 逐匚CWinApp4 pApp = AfiiGetAppO; AfxWiniiLi(i(); =

27、遛 pApp-InitApplicatioti();-I.,pTliiTsd-Tnhln5tanfe(); /匍始出彩專 r pThread-Run); 1理r rerum EjdtliiManceO屮退出 f whikPtekNfessdef /ifi fl 循耳 i9.消息循环的过程是什么? p.124-125,及图4.7在主进程的消息循环中,调用 PeekMessage(函数来获取消息,若没有消息,则进行空闲 Idle处理(执行Onldle空闲处理函数),然后用PumpMessage(函数来转换消息和发送消息给 操作系统,若消息是 WM_QUIT消息,则调用Exit In sta nee

28、 ()函数后退出消息循环。10.应用程序的退出过程是什么? p.126答:下面以单击主窗口的关闭按钮为例,来说明应用程序退出的过程。1)用户单击主窗口的关闭按钮,导致发送MFC发送标准命令消息ID_APP_EXIT ,于是MFC 调用相应的CWinApp:OnAppExit()消息处理函数来完成对该命令消息的缺省处理,主要 是向主窗口发送WM_CLOSE消息。2)主窗口处理 WM_CLOSE 消息,于是MFC调用相应的CFrameWnd:OnClose()消息处理函 数,在该函数中处理各类边框窗口的关闭,还涉及到关闭相关的文档、销毁相关的窗口,关闭窗口后,发送WM_QUIT消息。3)消息循环中

29、收到WM_QUIT消息后,退出消息循环,进而退出整个应用程序。第五章 MFC WinSocket类的编程1 .使用CAsyncSocket类的一般步骤是什么?答:CAsyncSocket类是异步套接字类。使用的一般步骤如下:序号服务器(Server)客户机(Client)1/构建一个套接字CAsyn cSocket sockSrvr;构建一个套接字CAsyn cSocket sockClie nt;2/创建SOCKET句柄,绑定到指定的端口sockSrvr.Create( nPort);创建SOCKET句柄,使用默认参数sockClie nt.Create();3/启动监听,时刻准备接受连接请

30、求sockSrvr.Liste n();4请求连接到服务器sockClie nt.C onn ect(strAddr, nport);5/构造一个新的空的套接字Casyn cSocket sockRecv;/接收连接sockSrvr.Accept(sockRecv);6/接收数据sockSrvr.Receive(pBuf, nLen);发送数据sockClie nt.Se nd(pBuf, nLen);7/发送数据sockSrvr.Se nd(pBuf, nLen);接收数据sockClie nt.Receive(pBuf, nLen);8/关闭套接字对象 sockSrvr.Close();关

31、闭套接字对象sockClie nt.Close();2.CAsyncSocket类可以接受并处理哪些消息事件?当这些网络事件发生时, MFC框架作何处理?(消息机制)答:MFC套接字对象可以接受并处理的 六种网络事件:(1) FD_READ事件通知:通知输入缓冲区中有数据可读。(2) FD_WRITE事件通知:通知输出缓冲区已腾空,可以写数据。(3) FD_ACCEPT事件通知:通知服务器端的监听套接字有连接请求可以接受。(4) FD_CONNECT事件通知:通知客户端的请求连接的套接字,连接的要求已被处理。(5) FD_CLOSE事件通知:通知套接字已关闭。(6) FD_OOB事件通知:通知将有带外数据到达处理:按照Windows的消息驱动机制,MFC框架应当把消息发送给

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

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