“命名管道”又名“命名管线”(Named Pipes),是一种简单的
进程间通信(IPC)机制,Microsoft Windows大都提供了对它的支持(但不包括Windows CE)。命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的
数据通信。推荐用命名管道作为进程通信方案的一项重要的原因是它们充分利用了Windows内建的安全特性(
ACL等)。
命名管道(NamedPipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是:命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,不过如果要同时和多个进程通信它就力不从心了。
在计算机编程里,命名管道是一种从一个进程到另一个进程用
内核对象来进行信息传输。和一般的管道不同,命名管道可以被不同进程以不同的方式方法调用(可以跨权限、跨语言、跨平台)。只要程序知道命名管道的名字,发送到命名管道里的信息可以被一切拥有指定授权的程序读取,但对不具有制定授权的。命名管道是一种
FIFO(先进先出,First-In First-Out)对象。
假定有一台服务器保存着公司的秘密,我们要求只有公司的管理人员才能访问或编辑这些秘密(高权限信息)。而在自己的工作网络,公司内的每名员工都可看到网络上的这台计算机(低权限访问)。然而,我们并不希望普通员工(低权限组)取得对机密材料的访问权。公司要求我们开发一个数据管理系统,此系统只允许一个指定的用户组(高权限组)进行
操作。
在这种情况下,命名管道等包含
ACL的
数据通信系统可发挥作用。因为我们可利用ACL,使只有拥有特别权限的用户(高权限组)与指定服务器发送控制
信息,以此对公司的秘密进行操作。在此要记住的一个重点是:将命名管道作为一种
网络编程方案使用时,它实际上建立一个简单的客户机/服务器
数据通信体系(通常是TCP/IP,TCP协议具有良好的稳定性与数据安全性)。
要学习开发一组命名管道应用(可能是一个进程的不同
线程、同一个可执行性文件的不同实例或完全不同的程序),首先要了解命名管道的命名规范(命名协议),然后了解基本的管道类型,接着实现一组简单的服务器应用与一个客户端应用。然后再以它为基础,深入研究高级的服务器编程技术,了解更复杂的通信系统与简单的通信协议。
1. 创建命名管道