NetBIOS编程:从广播数据报到Win32服务及Win16环境应用
1. 广播数据报的使用
在之前的程序中,NCB.SEND.BROADCAST.DATAGRAM和NCB.RECEIVE.BROADCAST.DATAGRAM用于发送和接收广播数据报。广播数据报的使用与定向数据报类似,通常用于定位通信伙伴,以便建立会话。不过,大多数网桥和路由器会阻止广播数据报从一个物理局域网迁移到另一个物理局域网。因此,如果两个工作站位于不同的局域网段,使用广播数据报时可能无法相互通信。这是NetBIOS的一个固有弱点,因为它使用广播数据报来定位会话伙伴。大多数商业路由器和网桥允许对广播数据报进行智能过滤,除非数据报包含与NCB.FIND.NAME相关的消息,否则不会将其从一个局域网转发到另一个局域网。
2. 基于NetBIOS的Win32服务 - EchoServer
2.1 服务架构概述
这里探讨一个使用NetBIOS作为进程间通信(IPC)机制的Win32服务器(EchoServer)。该服务创建一个“监听”线程和多个“工作”线程。监听线程调用WaitingListen()函数,发布一个异步的NCB.LISTEN命令。当Echo客户端通过调用NCB.CALL命令与服务器连接时,监听线程将新客户端信息放入客户端队列。客户端信息包含客户端名称和监听线程接收到的LSN编号。客户端名称由NCB.LISTEN命令返回,因为该命令在