在windows下,网络通信的技术有netbios编程,重定向器、邮槽和管道,Winsock编程以及WinInet API等。下面简单的介绍一下netbios和winsock编程技术。

1          NETBIOS

网络基本输入/输出系统(Network Basic Input/Output System,NetBIOS)是一种标准的应用程序编程接口(API)。对应于OSI模型,NetBIOS主要在会话和传输层发挥作用。NetBIOS API实施方案适用于为数众多的网络协议,使得编程接口“与协议无关”。NetBIOS API中的两个主要的概念是LANA编号和NetBIOS名。LANA编号对应于物理网卡和传输协议的唯一组合NetBIOS名长度16个字符,其中第16个字符作为特殊用途保留下来。在Win32环境下,针对每个可用的LANA号,每个进程都会为其维持一张NetBIOS名字表。若为LANA 0增添一个名字,意味着应用程序只能在LANA 0上同客户端建立连接。另外,NetBIOS名分为唯一名字和组名两种类型。NetBIOS同时提供了“面向连接”服务以及“无连接”服务。有了上面的概念,我们来看看NetBIOS API的设置,只有一个函数:UCHAR Netbios(PNCB Pncb);其中PNCB是指网络控制块的指针,该网络控制块包含了Netbios命令和所需的参数。

2          WINSOCK

在为通信双方开发应用程序的情况下,套接字是相当有用的。可以说网络通信的基石是套接字,一个套接字是通信的一端。在WINDOWS系统中进行编程时,总是需要使用很多系统提供的应用程序接口来调用系统功能,或者与系统交互,在WINDOWS系统中专门针对网络编程的接口——WinSock API。该接口包含了一组网络I/0和获取网络信息的库函数,这些函数均需要套接字作为一个参数。实际上,一个套接字包含了本地协议端口,本地主机地址,远地协议端口,远地主机地址,协议这5种信息,是网络通信中的一个端点的抽象。WINSOCK规范不仅包含了人们所熟悉的Berkeley Socket风格的库函数,也包含了一组针对windows的扩展库函数,以使程序员能充分的利用windows消息驱动机制进行编程。

3          两种技术的比较

这两种编程接口各有优缺点,下面是对它们的一个比较:

      Netbios编程接口简单易学,Winsock编程接口较多。

      这两种编程接口在标示应用程序时所采用的方法不同,Netbios采用Netbios名+lana号,winsock采用套接字。

    Netbios被更多的协议支持,也就是所谓的与协议无关,而winsock只能在tcp/ip上面运行。

Netbios适用于一个网段内通信,不能跨越网段通信,而winsock可以,适合整个网络通信。

NetBIOS和winsock是编程接口,供开发人员使用。而tcp/ip,ipx/spx,NetBEUI等是网络协议。