创建命名管道示例

来源:互联网 发布:招聘新媒体美工的要求 编辑:程序博客网 时间:2024/06/05 11:00

  进行间可以通过剪贴板,匿名管道,命名管道或邮槽进行通信。命名管道服务器的创建:首先创建命名管道句柄(格式:\\<SERVERADDRESS>\PIPE\<PIPENAME>),然后连接命名管道(如果使用重叠对象,ConnectNamedPipe函数调用完成之后立即返回),接着等待客户端连接(当客户端连接服务器成功后,系统将会设置重叠对象中的事件对象为有信号),最后通过WriteFile或ReadFile进行命名管道读或写操作与客户端通信。命名管道客户端的创建:首先等待命名管道(连接成功之后方可进行下一步操作),接着调用CreateFile创建命名管道句柄,最后通过WriteFile或ReadFile进行命名管道读或写操作与服务器通信。

//////////////////////////////////////////////////////////////////////////// Np : NamedPipe//////////////////////////////////////////////////////////////////////////#include <windows.h>HANDLE g_hNpServer = INVALID_HANDLE_VALUE;HANDLE g_hNpClient = INVALID_HANDLE_VALUE;static LPCTSTR g_szNpName = _T("\\\\.\\PIPE\\Server"); // 命名管道名称/// <summary>创建命名管道服务端</summary>/// <return>是否创建成功</return>BOOL CreateNpServer(){ g_hNpServer = CreateNamedPipe(g_szNpName, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,  0, 1, 1024, 1024, NMPWAIT_WAIT_FOREVER, NULL);  OVERLAPPED overlapped; memset(&overlapped, 0, sizeof(OVERLAPPED)); overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); ConnectNamedPipe(g_hNpServer, &overlapped); WaitForSingleObject(overlapped.hEvent, INFINITE); return TRUE;}/// <summary>创建命名管道客户端</summary>/// <return>是否创建成功</return>BOOL CreateNpClient(){ WaitNamedPipe(g_szNpName, NMPWAIT_WAIT_FOREVER); g_hNpClient = CreateFile(g_szNpName, GENERIC_READ | GENERIC_WRITE, 0, NULL,  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);  return TRUE;}
原创粉丝点击