预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共95页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第2章基于NetBIOS的网络编程第2章基于NetBIOS的网络编程2.1.1NetBIOS概述NetBIOS特性NetBIOS特性NetBIOS在Windows中的应用Windows2000/XP中的NetBIOS的设置Windows2000/XP中的NetBEUI的设置2.1.2LANA编号LANA编号2.1.3NetBIOS名字NetBIOS名字2.1.4NetBIOS接口函数typedefstruct_NCB{ UCHARncb_command;//指定要执行的 Netbios命令 UCHARncb_retcode;//指定操作的返回值 UCHARncb_lsn;//对应一个本地交互编 号,成功执行NCBCALL或NCBLISTEN 命令后,函数会返回一个新的交互编号 UCHARncb_num;//指定本地名字的编号, NCBADDNAME或NCBADDGRNAME命 令的每一次使用,都会返回一个新的编号 PUCHARncb_buffer;//指向数据缓冲区 WORDncb_length;//指定缓冲区的长度 UCHARncb_callname[NCBNAMSZ];//指定 远程应用程序名字 UCHARncb_name[NCBNAMSZ];//指定应用程 序已知的名字 UCHARncb_rto;//设置接收操作的超时期限 UCHARncb_sto;//设置发送操作的超时期限 void(CALLBACK*ncb_post)(struct_NCB*); //指定异步命令完成后需 要使用的post例程的地址 UCHARncb_lana_num;//指定要在上面执行命 令的LANA编号 UCHARncb_cmd_cplt;//指定操作代码的返回 值 UCHARncb_reserve[10];//保留,必须为0 HANDLEncb_event;//指定设置Nonsignaled 状态的一个windows事件对象的句柄 }NCB,*PNCB;并不是在对NetBIOS的每次调用中都需要用到Ncb结构内的全部成员,在调用一个NetBIOS命令时并不一定要填写每一个NCB域;此外,NCB中的一些域具有输出参数的功能,命令执行后的返回值将填充到这些域中。 还应当注意的是,在填写NCB结构成员之前,必须对这个NCB结构清零,消除残留参数的影响,然后再开始填写结构内的相应成员。UCHARAddName(CHAR*Name,UCHARLana,UCHAR*NameNum) { NCBncb; memset(&ncb,0,sizeof(NCB)); ncb.ncb_command=NCBADDNAME; ncb.ncb_lana_num=Lana; strcpy((char*)ncb.ncb_name,Name); Netbios(&ncb); *NameNum=ncb.ncb_num; return(ncb.ncb_cmd_cplt); }NetBIOS接口函数2.2NetBIOS命令同步方式和异步方式的比较: 采用同步方式时,NetBIOS要等到该命令完成之后才能返回到你的程序。 采用异步方式时,将后续处理程序的地址或一个事件句柄告诉给NetBIOS,然后NetBIOS立即返回到当前程序,当该命令执行完成时将自动唤醒处理程序或触发相应的事件。 为了提高程序的执行效率,通常采用异步方式,只有少数几个NetBIOS命令必须采用同步方式,如NetBIOS复位命令。(2)26条命令分类: ①控制和测试命令(5条): 控制命令(3条):NCBRESET、NCBCANCEL、NCBUNLINK; 测试命令(2条):NCBSSTAT、NCBASTAT ②名字管理命令(3条): NCBADDNAME、NCBADDGRNAME、NCBDELNAME ③数据报通信命令(4条): NCBDGSEND(或NCBDGSEND|ASYNCH) NCBDGRECV(或NCBDGRECV|ASYNCH) NCBDGSENDBC(或NCBDGSENDBC|ASYNCH) NCBDGRECVBC(或NCBDGRECVBC|ASYNCH)④会话通信命令(9条): NCBCALL、NCBLISTEN、NCBSEND、NCBCHAINSEND、NCBSENDNA、NCBCHAINSENDNA、NCBRECV、NCBRECVANY、NCBHANGUP ⑤其他(5条): NCBACTION、NCBENUM、NCBFINDNAME、NCBLANSTALERT、NCBTRACE2.3基本程序2.3.1初始化程序LanaEnum()UCHARLanaEnum(LANA_ENUM*lenum) { NCBncb; UCHARucRc; memset(&ncb,0,sizeof(NCB)); nc