- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(讲稿)网络编程概论
(3)字节定界问题。不同的平台上给结构(struct)或联合(union)打包的方式也是不同的,这取决于所有数据类型的位数及机器的定界限制。一般情况下,操作系统在分配内存时,数据结构以4字节定界。 例如,在很多系统中,默认情况下,结构struct {char a; int b} 的长度为8而不是5。只有在1字节定界的情况下其长度才为5。 有几种方法可以解决字节定界问题: 对于具有相同字节顺序的平台,通信双方均以单字节定界;对于具有不同字节顺序的平台间的通信,显式地定义格式(位数、字节顺序类型)。 另一种方法是,将需要发送的信息的结构在发送前变换成一种统一的格式(转换成一个字符数组),到达接收方后再执行相反的过程。对于数据结构中有比特变量的情况,处理起来更加复杂。因此,在实际网络编程中,尽量不要使用比特变量。 在很多网络协议的设计中,常常需要填充一些无用的字节以满足四字节定界,从而简化协议的实现。 1.3.3 阻塞与非阻塞通信 通信包括阻塞和非阻塞两种模式。 在网络编程时,选择通信模式是一件很重要的事情。选择依据是应用的实际需要。 对于UDP协议而言,由于UDP没有发送缓存,因此所有UDP协议即使在阻塞模式下也不会发生阻塞。 通信模式对应用程序的设计方法也有直接的影响。在非阻塞模式下,应用程序必须不断地轮询是否有数据到达或有连接请求到达。这种轮询的方式耗费的CPU资源较大,要尽可能避免使用,或采用多路复用技术(调用select或poll函数)来解决这一问题。 而在阻塞模式下则不存在这一问题,但其缺点是进程或线程在执行I/O操作时将被阻塞而不能执行其他的工作,因此在单进程或单线程应用中不能使用这种模式。在多线程应用中比较适合采用阻塞模式,一个线程被阻塞不影响其他线程的工作。 表1.5 面向连接服务与无连接服务的比较 1.3.5 差错处理 任何应用程序均需进行差错处理,即检查函数返回的调用结果的正确性并做出相应的处理。网络应用编程接口提供差错处理的基本设施,更高一级的差错处理需要应用程序来实现。 在UNIX系统中,有一个全局变量errno,每当一个Unix函数(不仅仅是网络应用编程接口中的函数)中出现差错时,errno将被置成一个指示错误类型的正数,而函数本身则通常返回-1。 errno的值在函数发生错误时设置。如果函数正确返回,则errno的值就无定义。在UNIX系统中,所有的错误代码都是常数值,在头文件sys/errno.h中定义。 在一个进程中共享所有全局变量的多线程编程不适宜采用把错误代码保存在全局变量errno中的方法。因此,在多线程环境中,每个线程必须有自己的errno变量。通常情况下,当编译时的程序指定为可重入时,即有编译选项为-D_REENTRANT,编译器缺省将errno.h头文件中的errno宏扩展为一个函数,由该函数访问errno变量局限于某个线程的副本,提供一个局限于线程的errno变量的隐式请求。在有些UNIX系统中,如Digital UNIX,还有一个与错误处理有关的全局变量sys_errlist[],它是一个二维字符串数组,用错误代码作为数组的下标即可得到该错误代码对应的错误报文。 习题与思考题 1. 描述IEEE 802.3 MAC帧的结构。不同的高层协议在帧的类型字段中的代码是什么? 2. 简述TCP/IP协议族的不同层中的各种协议及其作用。 3. 简述IP数据报中各字段的含义。 4. 简述并比较MAC地址、IP地址和端口的作用。 5. 试举例说明网络编程时可能遇到的问题,并提出相应的比较合理的解决方案。 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 讲授36学时,试验12学时。 2009年春季学期 湖北民院信息工程学院 考试方式:考查 考查内容:听课情况+试验+作业+软件(设计报告、软件原型) 1.1 概述 网络基本课程体系 网络基本原理 网络工程与管理 网络通信开发 网络安全 网 络 基 本 课 程 体 系 为什么开设本课程 如何通过计算机网络实现用户之间的通信?如何开发基于网络的应用系统(如协议分析、网络计费、网络监控、防火墙、网络入侵检测等)?如何有效地管理网络?……解决上述问题的关键是网络编程和网络协议分析。 到目前为止,还没有一本深入浅出地、全面地介绍网
文档评论(0)