Delphi 使用管道进程间通讯
来源:互联网 发布:epoll 高性能网络库 编辑:程序博客网 时间:2024/06/05 20:20
发起进程:创建管道,发送数据,接受反馈数据
Const PipeName = '\\.\pipe\Test'; PipeSize = 1000; PipeTimeOut = 3000;procedure PipeServer();var Se:TSecurityAttributes; SPipeHandle:THandle; Buffer:Pchar; WriteBuffer:DWORD;begin Se.nLength:=Sizeof(TSecurityAttributes); Se.lpSecurityDescriptor:=nil; Se.bInheritHandle:=True; SPipeHandle:=CreateNamedPipe(PipeName, PIPE_ACCESS_DUPLEX OR FILE_FLAG_WRITE_THROUGH, PIPE_TYPE_BYTE or PIPE_WAIT, 1,PipeSize,PipeSize,PipeTimeOut,@Se); Buffer:=AllocMem(1000); if SPipeHandle<> 0 then begin while True do begin if ConnectNamedPipe(SPipeHandle,nil) then begin Buffer:=PChar(IntToStr(GetTickCount)); //写入数据 WriteFile(SPipeHandle,Buffer[0],Length(Buffer),WriteBuffer,nil); Sleep(500); //等待反馈数据 ReadFile(SPipeHandle,Buffer[0],PipeSize,WriteBuffer,nil); DisConnectNamedPipe(SPipeHandle); end; Sleep(2000); end; CloseHandle(SPipeHandle); end; FreeMemory(Buffer);end;
监听进程:接受数据,反馈数据
Const PipeName = '\\.\pipe\Test'; PipeSize = 1000;procedure PipeClient();var Buffer:Array [0..1000] of Char; Requst:PChar; ReadSize:DWORD; hPipe:Thandle;begin while True do begin if WaitNamedPipe(PipeName,NMPWAIT_WAIT_FOREVER) then begin hPipe:=CreateFile(PipeName,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,NiL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE or FILE_FLAG_WRITE_THROUGH, 0); if hPipe <> INVALID_HANDLE_VALUE then begin ReadSize:=0; ReadFile(hPipe,Buffer[0],PipeSize,ReadSize,nil); if ReadSize > 0 then begin //收到数据 Requst:= Pchar(Format('%s OK',[Buffer])); //写入反馈 WriteFile(hPipe,Requst[0],Length(Requst),ReadSize,nil); end; CloseHandle(hPipe); end; end; end;end;
- Delphi 使用管道进程间通讯
- delphi 进程间通讯(管道通讯)
- Java使用管道实现进程间通讯
- Java使用管道实现进程间通讯
- 进程间通讯--管道
- 进程间通讯:管道
- 进程间通讯--管道
- Linux进程间通讯--管道(有名管道
- 管道实现进程间通讯
- 管道实现进程间通讯
- 管道实现进程间通讯
- 进程间通讯---匿名管道
- linux进程间通讯--管道
- Linux-进程间通讯-管道
- 进程间通讯-有名管道
- 进程间通讯-无名管道
- 进程间通讯—管道
- VB进程间通讯-----使用匿名管道原代码
- 《编程之美》中黑球,白球各100,问最后剩下一个是黑球的概率
- 生产者消费者模型
- mysql 触发器实例
- 搜集一些RPi的应用
- 即便没有读者,你也要写博客
- Delphi 使用管道进程间通讯
- android退出所有activity
- Java HashMap实现原理
- Maven--多模块依赖实例解析(五)
- mysql二进制日志文件恢复数据库
- Spring 3.0将文件上传至服务器
- linux静态链接库与动态链接库的区别及动态库的创建
- C库字符串反汇编分析
- 数据挖掘领域十大经典算法初探