ivy-jie

progress ...

C++博客 首页 新随笔 联系 聚合 管理
  9 Posts :: 41 Stories :: 6 Comments :: 0 Trackbacks

1  Win32应用程序可以使用Network Basic Input/Output System(NetBIOS)接口与网络中的其他计算机上的应用程序进行通讯。NetBIOS接口包括一系列显式命令,由一个被称为网络控制块(NCB)的结构提供。应用程序可以对任何支持NetBIOS接口的协议发出NetBIOS命令。
2  netbios   函数用来解释并执行一个专有的NCB块结构  
   
  UCHAR   Netbios(  
      PNCB   pncb       //   指向网络控制块的指针  
  );  
   
  返回值:  
  <1>作为同步请求,返回值就是NCB的返回代码,同时这个返回代码也包含在NCB的ncb_retcode成员中  
  <2>作为异步请求有下面几种情况:  
        1.如果异步命令在netbios()返回返回他的调用者之前已经完成,情况同<1>  
        2.与1.相反,返回值就是0  
  <3>如果pncb指针无效返回值是NRC_BADNCB  
  <4>如果ncb_length成员的值不正确或者是ncb_buffer区域被写保护返回值为NRC_BUFLEN  
   
  下面讲讲NCB控制块的结构:  
  typedef   struct   _NCB   {  
          UCHAR     ncb_command;    
          UCHAR     ncb_retcode;    
          UCHAR     ncb_lsn;    
          UCHAR     ncb_num;    
          PUCHAR   ncb_buffer;    
          WORD       ncb_length;    
          UCHAR     ncb_callname[NCBNAMSZ];    
          UCHAR     ncb_name[NCBNAMSZ];    
          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;    
  }   NCB;            
3  ncb_command:指定一个命令码和一个该NCB是同步还是异步处理的标志,如果ASYNCH常量通过"|"运   算符与命令码组合的话,那么这个NCB块将会异步执行。  
    .NCBACTION:用于   Win   NT非标准的Netbios   3.0的标准命令  
    .NCBADDGRNAME:添加一个组名字到本地名字表,这个名称不能被网络上的其他进程作为一个唯一的   名字来使用但是他可以被其他进程作为组名字来添加  
    .NCBADDNAME:添加一个唯一名字到本地名字表,TDI驱动程序保证这个名字在网络中的唯一性  
    .NCBASTAT:返回一个本地或者远程适配器的状态,当使用这个命令的时候,ncb_buffer   成员指向一个ADAPTER_STATUS结构后面紧跟着一个NAME_BUFFER结构数组  
    .NCBCALL:用另外一个名字开启一个会话  
    .NCBCANCEL:终止前一个未执行完的命令  
    .NCBCHAINSEND:发送两份数据缓冲到指定的会话伙伴  
    .NCBCHAINSENDNA:发送两份数据缓冲到指定的会话伙伴,但不等待对方应答就立即返回  
    .NCBDELNAME:从本地名字表中删除一个名字  
    .NCBDGRECV:接收来自宁一个名字的数据包  
    .NCBDGRECVBC:接收来自宁一个名字的以广播方式发送的数据包  
    .NCBDGSEND:发送一个数据包到一个指定的名字(进程)  
    .NCBDGSENDBC:发送一个数据包到局域网中的每一台主机  
    .NCBENUM:用于WinNT,非标准的Netbios3.0的命令  
    .NCBFINDNAME:定位一个名字在网络中的位置,此时ncb_buffer指向FIND_NAME_HEADER结构,同时后面紧跟着一个或者多个FIND_NAME_BUFFER结构  
    .NCBHANGUP:关闭一个指定的会话  
    .NCBLISTEN:允许一个会话以另外一个名字打开(本地或者远程的会话都可以)  
    .NCBRECV:从一个指定的会话伙伴接收数据  
    .NCBRECVANY:从任何一个其他的以一个指定的名字通信的会话接收数据  
    .NCBRESET:复位一个网络适配器,在他接收任何命令(与ncb_lana_num成员有相同的数字)之前必须进行复位操作????  
    .NCBSEND:发送数据到指定的会话伙伴  
    .NECBSENDNA:发送数据到指定的会话伙伴后不等待应答立即返回  
    .NCBSSTAT:返回某个会话的状态,指定这个命令以后ncb_buffer成员指向一个SESSION_HEADER   结构,后面紧接着一个或多个SESSION_BUFFER   结构  
    .NCBUNLINK:断开一个适配器的连接,该命令的设置是处于兼容性的考虑,在Win32中不支持该命令

posted on 2009-05-23 09:34 ivy-jie 阅读(2885) 评论(0)  编辑 收藏 引用 所属分类: network

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理