【IPC进程间通讯之二】管道Pipe
摘要:IPC进程间通信+管道IPC(进程间通信。管道用于在进程之间共享数据。管道不仅可以用于本地进程间通信,还可以封装底层计算机网络实现。匿名管道只能用于父进程和子进程之间的通信,命名管道可以用于任意进程之间的通讯命名管道通信过程分为服务器和客户端。此功能用于服务器等待客户端连接到管道大道。
IPC进程间通信+管道Pipe
IPC(Inter-Process Communication。进程间通信)。 管道用于进程间共享数据,事实上质是共享内存。经常使用IPC之中的一个。管道不仅能够用于本机进程间通信,还可实现跨网络进程间通信。如同Socket通信。管道相同封装计算机底层网络实现,提供一个良好的API接口。
1.管道(Pipe):
管道分为匿名管道和命名管道。
匿名管道仅仅能用于父子进程间通信 ,不能跨网络通信,而且通信是单向。 命名管道可用于随意进程间通信。支持跨网络通信,而且通信是双向。随意一段都能够接收和发送数据。命名管道是学习的重点。
命名管道通信进程分为服务端和client,服务端创建Pipe,client通过管道名连接该Pipe之后。两方均可通过该Pipe发送和接收数据。
2.邮槽命名 :
本机上格式:\ServerNamePipe ame
如:\.Pipemy_pipe
3.基本API函数 :
创建命名管道:
HANDLE CreateNamedPipe(
LPCTSTR lpName, // 指向管道名称的指针
DWORD dwOpenMode, // 管道打开模式
DWORD dwPipeMode, // 管道模式
DWORD nMaxInstances, // 最大实例数
DWORD nOutBufferSize, // 输出缓存大小
DWORD nInBufferSize, // 输入缓存大小
DWORD nDefaultTimeOut, // 超时设置
LPSECURITY_ATTRIBUTES lpSecurityAttributes // 安全属性指针
);
该函数用于server端创建命名管道。
等待client连接:
BOOL ConnectNamedPipe(
HANDLE hNamedPipe, //管道句柄
LPOVERLAPPED lpOverlapped //设为NULL
);
该函数用于server等待client连接到管道。 检查命名管道:
BOOL WaitNamedPipe(
LPCTSTR lpNamedPipeName, //管道名
DWORD nTimeOut //超时
);
打开命名管道:
BOOL CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile );
该函数用于打开一个管道。并返回管道句柄。
读取管道:
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDOWRD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped);
第一个參数:管道句柄。
第三个參数:消息的长度。
第五个參数:一般设置为NULL。
该函数用于读取管道内数据。
写入管道:
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped);
第二个參数:数据缓冲区指针。
先在VC6.0中执行服务端程序。在执行client程序。
执行效果:
server程序:
免责声明:文章转载自《【IPC进程间通讯之二】管道Pipe》仅用于学习参考。如对内容有疑问,请及时联系本站处理。
上篇74HC595 8位移位寄存器的使用小结分享一个利用HTML5制作的海浪效果代码下篇
宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=