15,471
社区成员
发帖
与我相关
我的任务
分享
char buffer[1024];
DWORD ReadNum;
//create named pipe
//char pipeNameStr[30];
//sprintf_s(pipeNameStr,"\\\\.\\pipe\\myPipeName");
CString pipeNameStr(_T(PIPENAME));
//HANDLE m_pipe = CreateNamedPipe((LPCWSTR)pipeNameStr, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, 1, 1024, 1024, 1000, NULL);
//HANDLE m_pipe = CreateNamedPipe((LPCWSTR)pipeNameStr,PIPE_ACCESS_DUPLEX|FILE_FLAG_WRITE_THROUGH,PIPE_WAIT|PIPE_TYPE_MESSAGE,
//PIPE_UNLIMITED_INSTANCES,128,128,NULL,NULL);
HANDLE m_pipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\myPipe"),PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT
,PIPE_UNLIMITED_INSTANCES,0,0,NMPWAIT_WAIT_FOREVER,0);//
if (m_pipe == INVALID_HANDLE_VALUE)
{
//failed!
int e = WSAGetLastError();
return 1;
}
if (ConnectNamedPipe(m_pipe, NULL) == FALSE) // 等待客户机的连接
{
CloseHandle(m_pipe); // 关闭管道句柄
return 1;
}
// 从管道读取数据
//char* buffer=new char[1024];
int ret = 0;
if ((ret = ReadFile(m_pipe, buffer, sizeof(buffer), &ReadNum, NULL)) == FALSE)
{
CloseHandle(m_pipe); // 关闭管道句柄
return 1;
}
else
{
buffer[ReadNum] = '\0'; // 显示接收到的信息
}
#######client:################################
if (WaitNamedPipe(_T("\\\\.\\pipe\\myPipe"), NMPWAIT_WAIT_FOREVER) == FALSE)
{
return 1;
}
// 打开已创建的管道句柄
//HANDLE hPipe = CreateFile(_T("\\\\.\\pipe\\myPipe"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hPipe=CreateFile(TEXT("\\\\.\\pipe\\myPipe"), GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hPipe == INVALID_HANDLE_VALUE)
{
return 1;
} else {
int k = 1;
}
CString pipeNameStr(_T(PIPENAME));
DWORD WriteNum; // 发送的是数据长度
// 向管道写入数据
//CString msgStr(_T("hello,i am zero!hahha"));
char msgStr[1024] = "hello,i am zerohahha";
int ret = 0;
if ((ret = WriteFile(hPipe, msgStr, pipeNameStr.GetLength(), &WriteNum, NULL)) == FALSE)
{
//m_sMessage = "数据写入管道失败!"; // 显示信息
//Invalidate();
int i = 1;
}
else
{
//m_sMessage = "数据成功写入管道!"; // 显示信息
//Invalidate();
int j = 1;
}