康骄建材信息网

ad2

NetBIOS特性与编程基础

时间:2009-06-14 04:07来源: 作者: 点击:
NetBIOS同时提供了“面向连接”服务以及“无连接”服务。面向连接的服务,是指它允许两个客户机相互间建立一个会话,或者说建立一个“虚拟回路”。这种会话实际是一种双向的通信数据流,通信的每一方都可向另一方发送消息。面向连接的服务可担

NetBIOS同时提供了“面向连接”服务以及“无连接”服务。面向连接的服务,是指它允许两个客户机相互间建立一个会话,或者说建立一个“虚拟回路”。这种会话实际是一种双向的通信数据流,通信的每一方都可向另一方发送消息。面向连接的服务可担保在两个端点之间,任何数据都能准确无误的传递。在这种服务中,服务器通常将自己注册到一个已知的名字下。客户机会搜寻这个名字,以便建立与服务器的通信。就拿NetBIOS的情况来说,服务器进程会针对想通过它建立通信的每一个LANA编号,将自己的名字加入与其对应的名字表。而对于其他机器上的客户来说,就可将一个服务名解析成机器名,然后要求同服务器进程建立连接。大家可以看到,为建立这种虚拟回路,必须采取一些适当的步骤。而且在初次建立连接的时候,还会牵涉到一些额外的开销。“面向连接”或“面向会话”的通信可保证通信具有极高的可靠性,而且数据包的收发顺序也能保证正确无误。然而,它仍然是一种“以消息为基础”的服务。也就是说,假如已连接好的某个客户机执行一个“读”命令,那么服务器在流中仍然只会返回一个数据包——尽管客户机此时提供了一个足够大的缓冲区,可同时容下几个包!
  “无连接”或数据报服务中,服务器并不将自己注册到一个特定的名下,而只是由客户机收集数据,然后将其送入网络,事前不必建好任何连接(即无连接)。对于数据的目的地址,客户机会将其定义成服务器相应进程对应的NetBIOS名字。这种类型的服务不提供任何保障,但同面向连接的服务相比,却可有更好的性能,如在使用数据报服务时,省下了建立连接所需的开销。例如,客户机可能向服务器兴冲冲的一下子发出数千字节的数据,但那台服务器早在一两天前便已当机了。除非依赖自服务器传来的响应,否则客户机永远都收不到任何错误提示。

  现在我们已理解了NetBIOS的一些基本概念,接下来要讨论的是NetBIOS的设置,只有一个函数:

  UCHAR Netbios(PNCB pNCB);

  用于NetBIOS的所有函数声明、常数等等均是在头文件Nb30.h内定义的。若想连接NetBIOS应用,唯一需要的是库Netapi32.lib。该函数最重要的特征便是pNCB这个参数,她对应于指向某个网络控制块(NCB)的一个指针。在那个NCB结构中,包含了为执行一个NetBIOS命令,相应的NetBIOS函数需要用到的全部信息。该结构的定义如下:

以下为引用的内容:

typedef struct _NCB

{ UCHAR ncb_command;

UCHAR ncb_retcode;

UCHAR ncb_lsn;

UCHAR ncb_num;

PUCHAR ncb_buffer;

WORD ncb_length;

UCHAR ncb_callname[NCBNAMESZ];

UCHAR ncb_name[NCBNAMEZ];

UCHAR ncb_rto;

UCHAR ncb_sto;

void (*ncb_post)(struct _NCB *);

UCHAR ncb_lana_num;

UCHAR ncb_cmd_cplt;

UCHAR ncb_reserve[10];

HANDLE ncb_event;

}* PNCB.NCB


 

  进行任何NetBIOS调用之前,不要一开始就填写结构内成员,而应先将这个NCB结构清零。

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
Copyright 康骄建材信息网(www.hker.net). All Rights Reserved. 渝ICP备19017680号
Powered by Hker6.0 建议1024*768.本站文字来源网络,如有侵权请联系我们删除:Hkeradmin@gmail.com。