Welcome

首页 / 软件开发 / C++ / 在C++Builder利用NetBIOS进行编程

在C++Builder利用NetBIOS进行编程2009-11-17NetBIOS是网络基本的输入/输出系统,是一个应用于程序接口,用于数据源与目的地之间的数据交换。即能够访问支持计算机应用程序和设备通信时要用到的各种服务,具有明确而简单的通信协议,必须用特殊的命令序列来调用NetBIOS服务。

首先我们来了解一下NetBIOS的基本知识。

一.NetBIOS 的基础

1。在网络层次中,NetBIOS是处于表示层和会话层之间,是参考模型的高层。因此其接口程序的应用在很大程度上并且从本质上与较低层次的各种活动隔离开。它支持IEEE802.2 的逻辑链路控制(LLC)协议。现在NetBIOS正迅速地成为不同操作系统环境下普遍使用的数据通信平台,这些操作系统包括PC DOS,OS/2,UNIX 和Windows。

2。NetBIOS的出现是在1984年8月IBM PC的网络适配器中,是由Sytek公司为IBM设计的。它采用宽带同轴电缆,提供每秒2MB的数据传输突发率,使用了流行的工业标准CSMA/CD(多访问载波侦听/载波检测)作为访问协议,这种协议首次出现在IEEE 802.3 以太网标准中。

3。NetBIOS的应用服务:NetBIOS提供四种应用服务,它们分别为:命名支持,数据报支持,会话支持和通用命令。

(1).命名支持:每个NetBIOS 网络积适配器在网络中都使用一个或多个网络名来标识自己,以区别于其他的网络适配器。网络名由16个字符组成。

(2).数据报支持:当一个适配器在网络中激活后,在计算机上的应用程序就可以用NetBIOS与驻留在同一个或不同计算机上的其他应用通信。它们之间的应用通信可以使用数据报来进行。

数据报是一条短信息,它的长度随NetBIOS实现方法的不同而不同,不能保证数据的正确传输。也不接收来自接收方的指示,如:在存在,未加电或不接收数据报,这样 在网络发生故障时,发出的数据报可能不会被任何计算机接收到。

数据报有两种类:广播型和定向型。广播型是完全不区分接收者的数据报,可以使用NetBIOS的Send Broadcast Datagram命令来发送数据,接收方可调用NetBIOS Receive Broadcaset Datagram命令来接收数据。定向型是指定数据报接收者的组名,任何一方都可以调用NetBIOS Send Datagram命令发送数据,接收方可以调用NetBIOS Receive Datagram命令来接收发送过来的数据。

(3).会话支持:在NetBIOS应用通信中的第二种形式是会话通信了,它支持可以在两个应用程序之间创建一个可靠的双向数据通信连接,并能保持较长时间。这种连接有时也称为虚电路。相互通信的应用可以驻留在同一台计算机上(本地会话)或驻留在不同的计算机上(远程会话)。

会话通信比数据报通信的优点有:对于每个被发送的信息,发送前能得知对方接收准备情况,而数据报通信只提供信息的发送状态。

可以使用NetBIOS的Listen命令来创建会话,Listen命令引用NetBIOS命令表中的一个名字。另一端则使NetBIOS Call 命令,Call命令要用到其NetBIOS命名表中的名字,这个名字必须与另一端的的应用程序所用的名字相匹配,这样两边的名字相匹配是两个应用创建会话的依据,在Listen 命令和 Call 命令执行完后,就建立会话了。注意的是:首先调用 Listen命令,然后再调用 Call 命令,这个顺序不能颠倒。

会话创建后,每个客户端都收到一个会话已创建的指示,得到一个字节的无符号返回值,表示会话与适配器之间的联。创建会话后,每个客户端都可以调用NetBIOS的Send和Receive命令来传输和接收数。

(4).通用命令:NetBIOS的通用命令提供了五项NetBIOS服务,分别是:Reset(复位适配器),Adapter Status(显示适配器状态),Cancel and Unlink(撤消及断开命令),Find Name(匹配名字)和 Trace(跟踪命令)。

1).Reset 命令强迫适配器进入初始化状态,终止所有的会话,并删除NetBIOS 命名表中除永久节点名以外的所有名字。

2).Adapter Status 命令用来查询NetBIOS适配器,以获取有关操作信息,如:发现LAN 错误数和适配器NetBIOS命名表,用于知道远程计算机和适配器是否都被挂起,还是只有计算机被挂起。这是对远程适配器的状态进行查询的一个很好的实现方法。

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

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