预览加载中,请您耐心等待几秒...
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];//保留必须为0HANDLEncb_event;//指定设置Nonsignaled状态的一个windows事件对象的句柄}NCB*PNCB;并不是在对NetBIOS的每次调用中都需要用到Ncb结构内的全部成员在调用一个NetBIOS命令时并不一定要填写每一个NCB域;此外NCB中的一些域具有输出参数的功能命令执行后的返回值将填充到这些域中。还应当注意的是在填写NCB结构成员之前必须对这个NCB结构清零消除残留参数的影响然后再开始填写结构内的相应成员。UCHARAddName(CHAR*NameUCHARLanaUCHAR*NameNum){NCBncb;memset(&ncb0sizeof(NCB));ncb.ncb_command=NCBADDNAME;ncb.ncb_lana_num=Lana;strcpy((char*)ncb.ncb_nameName);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、NC