快速业务通道

在C++Builder利用NetBIOS进行编程

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
信息,如:发现LAN 错误数和适配器NetBIOS命名表,用于知道远程计算机和适配器是否都被挂起,还是只有计算机被挂起。这是对远程适配器的状态进行查询的一个很好的实现方法。

3).Cancel and Unlink:Cancel 命令是使应用程序结束尚未执行完的命令。Unlink命令是允许RPL引导的PC Network LAN 适配器,从RPL服务器上脱开,它只对基本适配器有效,通常返回一个 0 值,表明请求成功。4).Find Name 命令用于找出一个由Find Name 命令指定的符号名的适配器,在多个适配器共用一个组名时,它们都可以同时都应答,但是只有一个应答将返回给发出请求的应用端。

5).Trace 命令将激活对所有发向NetBIOS 接口的命令进行跟踪,其基本用途是为诊断程序提供支持。

4.NetBIOS命令的调用:

在应用程序中调用 NetBIOS 命令之前,将内存的一个64 字节区域先清空为 0 ,这样防止内存原有的数据导致NetBIOS 命令结束时,NetBIOS 错误地进入其他内存区域。应用程序使用这个区域创建一个 NetBIOS 控制块(NCB)。调用 NetBIOS 命令时,要根据命令的要求,填充控制块的域,所以如果没有正确填充这些NCB域,会导致用户计算机运行的挂起,这样会破坏整个系统。

NetBIOS 中利用的一个函数就是 Netbios(),此函数用于解说和执行指定的信息控制块(NCB)。函数定义如下:UCHAR Netbios(PNCB pncb);参数 pncb 用于描述网络控制块结构的指针。

NCB 结构的定义如下:

typeddf struct_NCB{
UCHAR ncb_command; //命令码
UCHAR ncb_retcode; //返回码
UCHAR ncb_lsn; //本地会话编码
UCHAR ncb_num; //数据报
ADD NAME (增加名)表入口
PUCHAR ncb_buffer; //信息缓冲区
WORD ncb_length; //信息缓冲区长度
UCHAR ncb_callname[NCBNAMSZ]; //CALL 的远程系统名
UCHAR neb_name[NCBNAMSZ]; //本地适配器网络名
UCHAR ncb_rto; //以 1/2s 为单位的接收超时UCHAR ncb_sto; //以 1/2s 为单位的发送超时void(*ncb_post)(struct_NCB*); //POST 例程指针
UCHAR ncb_lana_num; //执行命令的网络适配器编号
UCHAR ncb_cmd_cplt; //0XFF 命令挂起,否则命令结束
UCHAR ncb_reserve[10]; //保留值
HANDLE ncb_event; //事件句柄
}NCB;

NCB 命令域包含用于期望操作的 NetBIOS 的命令码,如果命令码的高价位是 0 ,NetBIOS 接收这个请求,并且当命令执行完成后,返回到应用程序,在这里这叫等待选择。每次只能有一个等待选择命令被挂起.虽然Reset,Cancel和Unlink 这些命令能保证执行完毕,但是其他一些命令仅仅在某些情况下才会结束。如果这样一个命令不结束,则NetBIOS 将不返回,并且计算机因为 NetBIOS 在等待结束的无限循环中而浪费资源。如要避免发生这样的情况,应用程序可以将除Reset,Cancel和Unlink 命令外所有命令的命令域的高价位设置为 1 ,这叫不等待选择。 NCB 返回码最终会包含命令的最终返回码值,如在命令结束后,其值为 0 ,则表示该命令成功地结束。否则,表明出现了错误。

NCB 的本地会话编码域包含着与一条命令相联系的本地会话编号。NCB 的名字编号域包含着与一条命令相联的 NetBIOS 命令表格中的名字编号。

NCB 的缓冲区域是一个指向信息缓冲区的指针。NCB 的缓冲区长度域记录了由NCB 的缓冲区域所指向的缓冲区的大小。NCB 的调用名域为16字节长,它包含着同该请求相关的一个远程名。

NCB 的本地名域包含着与请求相关的一个本地名。

NCB 的接受超时域与CALL 和 LISTEN 命令一起使用,它以 1/2s的时间间隔为单位。NCB 的发送超时域与CALL 和 LISTEN 命令一起使用,它以 1/2s的时间间隔为单位。

现把 Netbios() 函数的返回值介绍如下:

00h : 成功地完成,成功返回

01h : 无效的缓冲区

03h : 无效的命令

05h : 命令超时

06h : 不完整地接收消

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号