网站大量收购独家精品文档,联系QQ:2885784924

CH3 基于PACKET DRI的VER的网络编程方法.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CH3 基于PACKET DRI的VER的网络编程方法

设计、讲授:谭献海 Email:xhtan@;第3章 基于Packet Driver的网络编程 ;3.1概述 ;3.1概述;FTP包驱动程序----PC/TCP包驱动程序规范 ;3.2网络接口的标识 ;3.2网络接口的标识;3.3功能调用说明 ;①?? 初始化网络适配器,嵌入接收中断服务程序 功 能 号:AH=2 用 途:对网卡进行初始化。 适 用:所有机型。 入口参数:AH=2----功能号 AL=if_class /* 网络种类号 */ BX=if_type /* 网络类型号 */ DL=if_number /* 网络接口号 */ CX=unsigned typelen /* 名字的长度,小于等于8个 字节,可赋为0 */ DS:SI=char far *name /* 名字的指针,可为空NULL */ ES:DI=int (far * receiver)() /* 接收中断服务程序入口 */;?出口参数: 正确返回:carry flag 清零 AX=句柄号 错误返回:carry flag 置位 DH=错误代码 说明: A)????? 参数说明 变量name(DS:SI)是一个指向网络接口名字的缓冲区指针;变量typelen存放名字的长度长度; 变量receiver指向一个接收中断服务程序入口地址,通过上述功能调用,接收中断服务程序嵌入到Packet Driver中,当一个数据包到达后,网络适配器发出硬件中断,进入接收中断服务程序处理数据包。 ;接收中断分两步进行。 第一次中断:AX=0,通知应用程序申请缓冲区。 进入中断之前,Packet Driver为用户指定: BX----int handle AX----int flag(=0,表示是第一次中断) CX----unsigned int len /* 接收到的数据长度 */ 进入中断服务程序后,用户应根据CX中的数据长度值,申请接收缓冲区来存放接收到的数据包,用ES:DI指向申请到的缓冲区,缓冲区的长度存放到CX中,最后从中断中返回。 如果高层应用进程没有缓冲区可用,将指针ES:DI的值设置为0:0,这时Packet Driver将丢弃该数据包,不再执行第二次中断调用。 缓冲区申请到后,Packet Driver将接收到的数据移入用户的接收缓冲区,然后通过第二次中断来通知用户“数据已移入接收缓冲区”。;第二次中断:AX=1,通知用户数据包已传送到缓冲区。 一般地,在第二次中断服务程序中设置一个标志,通知上层应用进程“有接收好的数据包待处理”。 接收到的数据包括帧头和数据域,但不包括同步序列和尾部的校验和。 ;B)??? 句柄说明 句柄用于指明Packet Driver与用户之间的接口参数。 实现方法:开辟一块内存缓冲区,将该缓冲区划分为若干小块,每块对应一个句柄。 在NE2000等Packet Driver中,缓冲区长度为24*10个字节,即每个用户接口参数占24字节,共有10块。 ;C)????? 错误代码的定义 表2 Packet Driver错误代码的值 (通过DH寄存器返回);(2)??? 获取网络适配器的物理地址 功 能 号:AH=6 用 途:将指定句柄所代表的局域网网卡的物理地址复制到指定的缓冲区。 适 用:所有机型。 入口参数:AH=6 /* 功能号 */ BX=int handle /* 句柄 */ CX=int len /* 缓冲区长度(以太网=6) */ ES:DI=char far *buf /* 地址缓冲区 */ 出口参数: 正确返回:carry flag 清零 CX=实际的地址长度 错误返回:carry flag 置位 DH=错误代码 ;(3)?? 设置接收模式 功 能 号:AH=14h(十进制20) 用 途:为句柄所指定的网络适配器设置接收模式。在网卡上的数据链路控制器(如DP8390)中设置地址来选择接收方式,同时为多址通信设置屏蔽位,以避免不加区分地、任意地接收。 适 用:所有机型。 入口参数: AH=20(十进制) /* 功能号 */ BX=int handle /* 句柄 */ CX=接收模式代码 出口参数: 正确返回:carry flag 清零 错误返回:carry flag 置位 DH=错误代码 ;表3 接收模式的定义 ;2)?? 获取驱动程序相关信息 功 能 号:AH=1 用 途:返回句柄所代表的接口的

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档