命名管道是一种不但能做同一机器上实现两个进程通信
还能在网络中的不同机器上的两个进程之间通信的机制
与油槽不同
命名管道传输数据是采取基于连接并且可靠的传输方式
命名管道数据只能1对1传输
创建命名管道可以调用函数CreateNamedPipe()进行创建
HANDLE CreateNamePipe(
LPCTSRT lpName,
DWORD dwOpenMode,
DWORD dwPipeMode,
DWORD nMaxInstances,
DWORD nOutBufferSize,
DWORD nInBufferSize,
DWORD nDefaultTimeOut,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
};
调用成功 返回创建的管道句柄
否则 返回 INVALID_HANDLE_VALUE
参数lpName表示创建的命名管道名称
格式为"\\.\pine\pipename"
但是,在实际编程,应将名称修改为 "\\\\.\\pipe\\pipename"
如果用户希望在不同计算机两个进程间通信
需要将名称字符串中的符号 .
修改为远程计算机的名称
dwOpenMode表示管道打开模式 包括访问模式 管道句柄的安全访问模式
以及重叠方式等
命名管道打开模式取值
模式取值
PIPE_ACCESS_DUPLEX 双向模式,服务器与客户端从命名管道中读取或写入数据
PIPE_ACCESS_INBOUND 命名管道的数据只能从客户端到服务器 即用户指定模式表示
服务器只能读取数据而客户端只能写入数据