- 1、本文档共92页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于NetBIOS的网络编程
§2.3.2 通信协议与方式选择 第二章 基于NetBios的网络编程 (2)数据报方式 特点:把每一个报文作为一个独立的数据包处理,从而免除了建立和撤除会话。数据报方式支持多播和广播通信。 缺点:不能保证接收到的报文次序和发送次序一致,甚至不能保证每一个报文都能正确无误地到达接收方。在报文丢失或发生差错时,系统不向发送方提供出错信息。 如果要设计的对话环境由一系列互不相关的报文组成,或者每次对话都很简单,对数据传送的可靠性要求不是很高,那么采用数据报可以大大加快对话的速度和灵活性。 需要注意的是,如果用数据报传送比较重要的报文,为了防止数据报在传送过程中出现差错和丢失,必须在应用层考虑差错处理功能,例如为报文加上序号。 §2.3.3 命令执行方式 第二章 基于NetBios的网络编程 命令执行方式:等待和非等待两种方式。 等待方式:只有当命令完成之后才能返回到主调程序。这样,网络通信命令与应用程序是一种串行工作的模式,对系统效率有较大的影响。此外,对等待命令处理不当将会造成系统长时间无响应甚至永久等待等后果,因此,在使用等待方式时,要格外小心,尽量避免使用。 非等待方式:轮询方法和异步事件处理方法。 (1)轮询方法:即循环检查网络控制块(NCB)中的最终返回代码字段,当它的值从0xFF变为其他值时表示该命令执行完毕。 (2)异步事件处理方法:即告诉NetBIOS,在当前命令执行完毕后转向存放在NCB的POST程序或触发相应的事件去执行一个指定的程序段。 §2.3.4 差错与超时控制 第二章 基于NetBios的网络编程 差错控制:在网络通信中,由于受到各种因素的影响,出现差错是在所难免的,为了使程序可靠运行,差错处理是必不可少的。差错控制可以由底层协议完成,也可以由上层应用程序来完成。 (1)底层协议的差错控制 在会话通信方式中,底层协议通常能完成差错检测、纠错、数据重组以及数据包重发等功能,这些功能对于上层来说都是透明的。 (2)上层应用程序的差错控制 在数据报通信方式中,底层协议通常不进行差错控制,这时上层应用程序需要通过一些机制来完成差错控制功能,例如增加校验位,序列号等方式。 在NetBIOS协议中,每发送一个NetBios命令,首先返回一个立即返回代码,并且在命令执行完毕后再返回一个最终返回代码(对于等待方式则只有最终返回代码)。仅当返回代码为0时表示命令执行成功,返回其它值均为差错。 §2.3.4 差错与超时控制 第二章 基于NetBios的网络编程 超时控制:很大程度上取决于网络类型、覆盖范围、网络繁忙程度。 (1)发送超时 对于像以太网、令牌环这样的局域网来说,由于地域上分布比较集中,网络的数据传输速率比较高(10Mbps~100Mbps),因此一个512字节的报文通常最多只需1~2ms就可以到达目的地。如果发送站连续发生发送超时出错,那么很可能是会话链路或者接收站发生了故障,而不是因为网络过于繁忙。 (2)接收超时 接收是一种被动的行为。接收方无法预知何时能收到一个报文,因此,接收站超时值可以设为无限期等待。但是如果发送方出了问题,而接收方又在无限期等待,这样就会造成原先的会话无法通信,而新的会话又无法建立,从而造成通信双方的无限期等待。因此会话双方应采用动态会话链路机制,即根据实际应用环境设置相应的超时值,当然,接收超时值应远远大于发送超时值。 §2.3.5 分组长度限制 第二章 基于NetBios的网络编程 不论何种通信协议,对于在网络上收发的分组长度都有一个上限。比如,对于NetBIOS的数据报服务,上限值通常为512字节,对于NetBIOS的会话服务,采用Send命令时上限值为 65535字节,而采用ChainSend命令时可以同时传送两个缓存的内容,字节长度的上限也加倍。 处理分组长度上限通常有两种做法: 一种是按照长度限制把数据分为若干段并加上序号,对每个段进行一次发送,到了接收端再按把它们装配起来复原。这样做虽然需要增加一定的编程工作量,但好处是可以把程序主体和分组上限问题分开来处理。 另一种做法是专门按照长度上限的规定来设计数据记录的格式,这样每一个报文都可以毫无困难地发送。但是,这样做的缺点是一旦在已有的记录中增加数据字段的话,只能重建记录。 §2.4 基本程序 第二章 基于NetBios的网络编程 初始化程序 加名字与删除名字 §2.4.1 初始化程序 第二章 基于NetBios的网络编程 初始化程序主要功能: (1)获得当前所有可用的网卡编号(0~254); (2)复位指定网卡上的NetBIOS。 初始化程序在所有NetBIOS应用中都应首先被执行,只有初始化
文档评论(0)