第2章重定向器
 首先,我们打算解释如
何通过网络,使用“多U N C提供者”( Multiple UNC Provider, MUP)资源定位符,通过“通用命名规范”(Universal Naming Convention, UNC)来引用远程文件。

随后,我们讲解了M U P如何调用一个网络提供者,从而揭示出怎样通过一个重定向器,在“服务器消息块”(Server Message Block, SMB)协议的帮助下,在不同的计算机之间建立数据通信。

最后,我们探讨了网络安全方面的一些问题。使用基本的文件I / O操作,通过网络来访问文件时,这些安全问题是必须考虑到的。

2.1 通用命名规范

“U N C路径”  为网络文件及设备的访问建立了一套统一的规范。它最大的特点便是不必指定或引用一个已映射到远程文件系统的本地驱动器字母。

U N C名字完全解决了这些问题,它的格式如下:
\ \ [服务器] \ [共享名] \ [路径]
第一部分是\ \ [服务器],必须以两个反斜杠开头,紧跟着一个服务器名字。
第二部分是\ [共享名],它对应着远程服务器上的一个“共享入口”或者“共享位置”。
。而第三部分\ [路径]  对应的是共享位置下的某个具体目录(或子目录)


第3章邮槽

一种简单的单向“进程间通信”(interprocess communication,I P C)机制。这个机制的名字非常古怪,叫作“邮槽”(M a i l s l o t)。用最简单的话来说,通过
邮槽,客户机进程可将消息传送或广播给一个或多个服务器进程。在同一台计算机的不同进程之间,或在跨越整个网络的不同计算机的进程之间,协助进行消息的传输。用邮槽来开发应用程序是一件非常简单的事情,不要求对T C P / I P或I P X这样的基层网络传送协议有着非常深入的了解。由于邮槽是围绕一个广播通信体系设计出来的,所以当然不能指望能通过它实现数据的“可靠”传输。

邮槽最大的一个缺点便是只允许从客户机到服务器,建立一种不可靠的单向数据通信。
而另一方面,邮槽最大的一个优点在于,它们使客户机应用能够非常容易地将广播消息发送给一个或多个服务器应用。

3.1 邮槽实施细节
邮槽是围绕Wi n d o w s文件系统接口设计出来的。客户机和服务器应用需要使用标准的Wi n 3 2文件系统I / O(输入/输出)函数,比如R e a d F i l e和Wr i t e F i l e等等,以便在邮槽上收发数据,同时利用Wi n 3 2文件系统的命名规则。邮槽必须依赖Wi n d o w s重定向器,通过一个“邮槽文件系统”(Mailslot File System, MSFS),来创建及标识邮槽。

3.1.1 邮槽的名字
对邮槽进行标识时,需遵守下述命名规则:
\ \ s e r v e r \ M a i l s l o t \ [ p a t h ] n a m e
请将上述字串分为三段来看: \ \ s e r v e r、\ M a i l s l o t和\ [ p a t h ] n a m e。第一部分\ \ s e r v e r对应于服务器的名字,我们要在上面创建邮槽,并在在上面运行服务器程序。第二部分\ M a i l s l o t是一个“硬编码”的固定字串,用于告诉系统这个文件名从属于M S F S。而第三部分\ [ p a t h ] n a m e则
允许应用程序独一无二地定义及标识一个邮槽名。其中,“p a t h”代表路径,可指定多级目录。
举个例子来说,对一个邮槽进行标识时,下面这些形式的名字都是合法的(注意M a i l s l o t不得变化,必须原文照输,亦即所谓的“硬编码”):
由于邮槽要依赖Wi n d o w s文件系统服务在网上来创建和传输数据,所以接口是“与协议无关”的。
要想保证各种Wi n d o w s平台之间能够完全正常地通信,强烈建议将消息长度限制在4 2 4字节,或者更短。如果进行面向连接的传输,可考虑使用命名管道,而不是简单的邮槽。

3.5 小结
本章讲解了邮槽( M a i l s l o t)网络编程技术。利用这一技术,应用程序可以在Wi n d o w s重定向器的帮助下,实现简单的单向进程间数据通信。对邮槽来说,它最有价值的一项功能便是通过网络,将一条消息广播给一台或多台计算机。然而,邮槽并未提供对数据可靠传输的保障。假如希望用Wi n d o w s重定向器实现“可靠”的数据通信,请考虑使用命名管道,这是下一章的主题!

Posted on 2006-09-05 19:31 艾凡赫 阅读(698) 评论(0)  编辑 收藏 引用 所属分类: 基础知识C++网络编程

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