快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

07h : 本地No-Ack命令失败

08h : 无效的本地会话

09h : 没有可使用的资源

0Ah : 会话已关闭

0Bh : 命令已撤消

0Dh : 本地NetBIOS命名表中名字重复

0Eh : NetBIOS命名表满

0Fh : 名字具有活动会话,现被撤消登记

11h : NetBIOS 本地会话表满了

12h : 没有挂起的Listen 命令,所有拒绝断开会话

13h : 非法名字编号

14h : 不能找到被调用名字或无回答

15h : 找不到命令,或不能把*号或00h指定ncb_name的首字节,或名字已被撤消而不能再使用

17h : 名字已被删除18h : 会话非正常结束

19h : 检测到名字冲突

1Ah : 不兼容的远程设备

21h : 接口忙

22h : 挂起的命令太多

23h : 在ncb_lana_num域中无效的编号

24h : 产生取消时,命令已完成

25h : 字节组名命令指定了保留名字

26h : 命令不能被撤消

30h : 被另一个进程定义了名字

34h : NetBIOS环境未被定义

35h : 所用的操作系统资源用尽

36h : 超出最大应用个数

37h : NetBIOS无可以使用的SAP

38h : 无可以使用的请求资源

40h : 系统错误

41h : 检测到远程适配器的热载波

42h : 检测到本地适配器的热载波

43h : 未检测到载波

4Eh : 状态位12、14、或15被置位的时间超过 1 min

4Fh : 状态位8--11中的一个或多个被置位

50h--F6h: 适配器发生故障

F7h : 隐式DIR-INITIALIZE错误

F8h : 隐式DIR-OPEN-ADAPTER 错误

F9h : IBM LAN支持程序内部错误

FAh : 适配器检查

FBh : NetBIOS 程序未被装入PC

FCh : DIR-OPEN-ADAPTER 或 DIR-OPEN-SAP失败

FDh : 不期望关闭适配器

FFh : 命令挂起状态

为了更好地解说NetBIOS 的编程,现设计一个用 NetBIOS 来编写获取网络适配器信息的程序

二、创建程序例子

在C++Builder 5.0 中选择File / New ,打开“New Items”对话框,在对框中选择Consol Wizard.随后弹出“Consol Application Wizard”对话框,在Windows Type 中选择Consol,在ExecutionType中选择EXE,然后选择Finish,生成一个新的控制台应用程序。

//“Project1.cpp”源代码如下:
#pragma hdrstop
#include <condefs.h>;
#include <windows.h>;
#include <stdio.h>;
typedef struct _ASTAT

ADAPTER_STATUS adapt;
NAME_BUFFER NameBuffer[30];
} ASTAT, *PASTAT;ASTAT Adapter;//自定义复位适配器函数
bool ClearAdapter(NCB ncb);
//---------------------------------------------------------------------------
//#pragma argsused
int main()

NCB ncb;
UCHAR uRetCode;//先复位网络适配器ClearAdapter(ncb);memset(&;ncb,0,sizeof(ncb));//命令码为显示适配器状态
ncb.ncb_command=NCBASTAT;
ncb.ncb_lana_num=0;
strcpy((char *)ncb.ncb_callname,"* ");
ncb.ncb_buffer=(unsigned char *) &;Adapter;
ncb.ncb_length=sizeof(Adapter);
uRetCode=Netbios(&;ncb);
printf("The NCBASTAT returned code is OX%x\n",uRetCode);if(uRetCode==0)

printf( "The Ethernet Number is: %02x_%02x_%02x_%02x_%02x_%02x\n",
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5] );
if(Adapter.adapt.adapter_type==0xFF)
printf("The adapter is Token Ring adapter.\n");
else if(Adapter.adapt.adapter_type==0xFE)
printf("The adapter is Ethernet adapter.\n");printf("The software-release level is %d.%d\n",Adapter.adapt.rev_major,Adapter.adapt.rev_minor);
printf("The number of names in the local

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号