Windows 命名管道 - 客户端
概述:
命名管道是通过网络来完成进程间的通信的,它屏蔽了底层的网络协议细节。
所以在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。
命名管道充分利用了Windows NT和Windows 2000内建的安全机制。
命名管道是围绕Windows文件系统设计的一种机制,采用“命名管道文件系统(Named Pipe File System,NPFS)”接口。
将命名管道作为一种网络编程方案时,它实际上建立了一个客户机/服务器通信体系,并在其中可靠地传输数据。
创建管道的进程称为管道服务器,连接到一个管道的进程称为管道客户机。
管道服务器和一台或多台管道客户机进行单向或双向的通信。
一个命名管道的所有实例共享同一个管道名,但是每一个实例均拥有独立的缓存与句柄,
并且为客户——服务通信提供一个分离的管道。
实例的使用保证了多个管道客户能够在同一时间使用同一个命名管道。
以下代码为DLL库中的单元文件。
客户端代码:
UnmpClient.pas
(*--------------------------------------------------------------------------
Delphi菜鸟XiaoBin 2006.5.31于黑龙江草甸子
http://blog.csdn.net/xiaobin_hlj80
veic_2005@163.com
--------------------------------------------------------------------------*)
// 2006.12.22
// xiaobin
unit UnmpClient;
interface
uses Windows;
var
m_hInPipe:THandle;
function CreateNamedPipeClient:DWORD;stdcall;
implementation
function CreateNamedPipeClient:DWORD;
var
connPipe:Boolean;
begin
connPipe := WaitNamedPipe('\\.\pipe\xiaobin',120000);
if connPipe = false then
begin
Result := 0;
end;
m_hInPipe := CreateFile('\\.\pipe\xiaobin',
GENERIC_READ,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if (m_hInPipe=0) or (m_hInPipe=INVALID_HANDLE_VALUE) then
begin
//CloseHandle(m_hInPipe);
Result := 0;
end;
Result := m_hInPipe;
end;
end.
客户端主要调用2个API函数:
WaitNamedPipe、CreateFile
第一个函数功能为是否有一个我们已知的命名管道,没有返回0;
第二个函数功能为连接一个我们已知的命名管道,失败返回0;
分享到:
相关推荐
windows命名管道通信,两个进程通过命名管道通信
windows命名管道,包含服务端与客户端。方便大家学习,共同进步
Windows命名管道技术的分析与实现.pdf
用于windows平台上进程间通信
通过命名管道实现两个控制台相互收发消息的示例。 这是一个很简单的例子,并且可运行,仅供参考。
本程序用C 实现了命令管道的服务器端,利用I/O技术, 实测100万次无丢失,稳定性极高. 输出结果用DebugView查看
管道 包 npipe 提供了一个围绕 Windows 命名管道的纯 Go 包装器。 Windows 命名管道文档: : 请注意,代码位于分支),但应导入为 gopkg.in/natefinch/npipe.v2(包名称仍为 npipe)。 npipe 提供了一个基于 stdlib ...
进程通讯实现的多个客户端连接同一个命名管道
2.4 实验四:使用命名管道实现进程通信.doc
C++命名管道详解及简单案例(基于VS2013),包括服务器端和客户端
MAKEPIPE READPIPE 命名管道测试程序 [免费版] 测试网络命名管道服务的完整性 如果客户端工作站和服务器之间的连接打开,但仍无法连接到 Microsoft® SQL Server™ 2000,请使用 makepipe 和 readpipe 实用工具...
用命名管道实现进程间的通信,用类对命名管道的操作进行封装
利用命名管道,跨进程通信工程调用,快速编写代码,完成功能.并提供一个学习实例.
异步命名管道使用
第4章 命名管道 664.1 命名管道的实施细节 664.1.1 命名管道命名规范 674.1.2 字节模式及消息模式 674.1.3 应用程序的编译 674.1.4 错误代码 684.2 客户机与服务器的基础 684.2.1 服务器的细节 684.2.2 高级服务器的...
用命名管道实现进程间通信,界面用的wpf。 客户端输入 例:1+1,点击send(点Send前请打开服务端) 服务端接收到并运算后将结果返回给客户端 vs2015 + .NET Framework4.5.2,Windows应用程序
1.使用API函数CreateFile建立与命名管道的连接。 2.使用API函数WriteFile和ReadFile分别向客户端发送数据或从客户端接收数据。 3.使用API函数CloseHandle关闭打开的命名管道会话。 客户端: 1.使用API函数...
命名管道的实际用例。 // 服务端 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System....
windows 管道通信 命名管道 双向传递信息 实例