Win32程序设计之网络通信
5/31/2001 11:58:24· ·QQ新人类编译··yesky
这篇文章将会介绍现有的Win32函数支持的网络通信功能,并且展示了如何在你自己的应用中使用它们。在API中,有两个支持网络通信的便利方法:mailslot和命名管道(name pipes)。这篇文章将分别讨论它们,并且分别介绍它们的优缺点。
因为Win32 API直接支持网络通信,因此要创建各种使用网络的应用是特别简单的。例如,你要在你的网络中建立一个多用户会议系统,与BBS的“CB”类似。在这个系统中,用户在各自的机器上运行一个会议系统程序,他们所打的全部信息都会广播给同一网络的所有其他用户。通常这种系统可使用mailslots实现,因为mailslots很容易广播信息。事实上,多人的网络游戏使用的也是类似的技术。
当你要在两部机器间传送大量的数据流时,你通常使用点对点的命名管道连接。例如,你会使用命名管道来实现一个网络数字电话或者视频系统。客户/服务器也都是使用命名管道的。其中的一个中央机器会作为服务器端,然后其它所有的客户端就可使用命名管道与它分别进行连接。
网络基础
为了进行更好地理解下面的例子,懂得一些网络的基本知识是很有必要的。下面的图展示了一个小型公司中常见的简单网络。每台机器都使用一个网络适配器连接到网络中,并且都拥有一个唯一的名字来标识它。网络适配器决定了网络的类型,常见的有以太网或者令牌网。适配器还决定了网络使用的媒体,可以是同轴线、双绞线等。要知道的一点是,在这样的简单网络中,所有的机器都可以平等地与其它的机器进行通信。
*******************图一*************************
通过传统的Win32 API函数在机器间通信有两种方法。一种是mailslot,一个机器可以广播一个信息,网络中的其它所有机器都可以接收到。使用命名管道的话,一部机器选择另一部进行通信,并且与它建立一个特别的连接。命名管道的好处是连接可靠。如果连接打断的话,例如一块网卡或者网线出现故障,连接的两端都可以马上接收到连接断开的信息。mailslots是不可靠的,因为发送者无法确认接收者是否已经收到了信息。mailslot的好处是它可以很容易地同时给许多机器发信息。
上面的图展示的是一个网段。一个网段的定义是直接互相连接的一组机器。一个网段中的机器数目是受到限制的,因为当机器的数量增加时,网络的通信量也会增大。通常的限制是大约为100台机器。在一个大的公司中,每个网段大约包括有20到30台机器。所有的网段之间可以通过路由器进行连接,这样它们之间就可以进行通信,如下图所示。了解到这种差别是重要的,因为通常一个mailslot信息只能在一个网段中传送,而命名管道的信息可以经过路由器传送到另一个网段中。
******************图二***********************
使用mailslots和命名管道来进行网络通信,有三种不同的通信方式:广播、点对点和客户/服务器方式。将mailslot应用在广播模式时,一台机器发送信息到网段上的其它所有机器上。在点对点通信时,一台机器与另一台建立一个特别的连接,数据可以通过命名管道在它们之间往复传送。在一个客户/服务器的关系中,一台机器作为服务器,所有机器通过点对点的命名管道来与它进行连接。如果要使用客户/服务器的方式来模拟一个广播的操作,可以通过一台机器发送一个信息到服务器,然后服务器就可以将信息的副本分别发到每个客户端。