#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <tchar.h>
#include <strsafe.h>
#define PIPE_TIMEOUT 5000
#define BUFSIZE 4096
typedef struct
{
OVERLAPPED oOverlap;
HANDLE hPipeInst;
TCHAR chRequest[BUFSIZE];
DWORD cbRead;
TCHAR chReply[BUFSIZE];
DWORD cbToWrite;
} PIPEINST, *LPPIPEINST;
PIPEINST Pipe;
HANDLE hEvent;
VOID GetAnswerToRequest(LPPIPEINST pipe)
{
_tprintf( TEXT("[%d] %s\n"), pipe->hPipeInst, pipe->chRequest);
memset(pipe->chRequest,0,sizeof(pipe->chRequest)*sizeof(TCHAR));
_tscanf(_T("%[^\n]"),pipe->chReply);
fflush(stdin);
pipe->cbToWrite = (lstrlen(pipe->chReply)+1)*sizeof(TCHAR);
}
int _tmain(VOID)
{
DWORD cbRet;
BOOL fSuccess;
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\mynamedpipe");
// Create an event object for this instance.
hEvent = CreateEvent(
NULL, // default security attribute
TRUE, // manual-reset event
TRUE, // initial state = signaled
NULL); // unnamed event object
if (hEvent == NULL)
{
return 0;
}
Pipe.oOverlap.hEvent = hEvent;
Pipe.hPipeInst = CreateNamedPipe(
lpszPipename, // pipe name
PIPE_ACCESS_DUPLEX | // read/write access
FILE_FLAG_OVERLAPPED, // overlapped mode
PIPE_TYPE_MESSAGE | // message-type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
1, // number of instances
BUFSIZE*sizeof(TCHAR), // output buffer size
BUFSIZE*sizeof(TCHAR), // input buffer size
PIPE_TIMEOUT, // client time-out
NULL); // default security attributes
if (Pipe.hPipeInst == INVALID_HANDLE_VALUE)
{
return 0;
}
ConnectNamedPipe(Pipe.hPipeInst, &Pipe.oOverlap);
WaitForSingleObject( hEvent,INFINITE);
while (1)
{
fSuccess = ReadFile(
Pipe.hPipeInst,
Pipe.chRequest,
BUFSIZE*sizeof(TCHAR),
&Pipe.cbRead,
&Pipe.oOverlap);
if (_tcscmp(Pipe.chRequest,_T(""))!=0)
{
GetAnswerToRequest(&Pipe);
fSuccess = WriteFile(
Pipe.hPipeInst,
Pipe.chReply,
Pipe.cbToWrite,
&cbRet,
&Pipe.oOverlap);
}
else
{
Sleep(1);
}
}
return 0;
}
一个基于长连接的命名管道Demo
4星 · 超过85%的资源 需积分: 9 179 浏览量
2012-04-01
16:57:06
上传
评论
收藏 5KB RAR 举报
gykgod
- 粉丝: 30
- 资源: 4
最新资源
- 计算机专业毕业设计,基于Vue + ECharts的数据可视化系统的设计与实现
- Word1_20240424_000136.docx
- 图片网站图片爬虫Python代码
- 同城佳俪
- MATLAB实现LSTM神经网络预测数值(调用MATLAB自带lstm工具箱)
- %E5%B0%8F%E5%B0%8F%E5%A3%B0%E6%98%8E 3.zip
- jdk和idea安装使用教程
- python绘图时渐变的处理-以一个扇形图的渐变为例.html
- 基于STC15F104W的学习型无线遥控解码原理图+程序+说明和433程序+说明
- RIME-BP霜冰优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页