在C++Builder利用NetBIOS进行编程
信息,如:发现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 结构的定义如下:
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |