今天为大家带来一个Windows管道通信的演示实例,服务端以单线程、同步方式与客户端通信,在某一时刻只能服务于一个客户端,可用于简单的进程间通信的场景。
服务端(SingleInstancePipeSvr)和客户端(NamedPipeClient)都是用Visual Studio 2022 Community创建,分别有自己的项目,大家可下载后自行编译运行。随后附有程序的流程图供大家对照。程序按结构化设计要求设计,只有一个入口和一个出口,无跳转语句。为了使程序在逻辑上更易读,处理读写操作出错的代码存在冗余。
项目中有一个GLEPrint(GetLastCode Print)函数,用于打印错误代码的系统官方说明。该函数位于单独的源文件中,如果大家觉得有用可以单独拿出来放入自己的项目。
对于某些出错代码的官方说明未必适用于管道环境,程序对这些代码在管道应用中的含义做了进一步说明。比如,下图演示了在服务端未启动的情况下运行客户端给出的提示,先是给出了系统说明,然后再输出一句该代码在管道编程中的含义。
这个示例代码设计为先启动服务端,服务端会等待客户端的接入。客户端启动并连接服务端后,要求用户输入一些字符作为发送到服务端的请求,服务端接收到后可以根据自己的逻辑决定向客户端回应的内容,本示例中只是回复一个默认字符串,大家可自行修改。客户端接收到回复后会询问客户是否继续输入信息,如果客户选择N,客户端会退出,