0
点赞
收藏
分享

微信扫一扫

Windows命名管道

命名管道是一种常用的进程间通信手段,它可以单向也可以双工,用于管道服务器与一个或多个管道客户端之间的通信。Windows命名管道提供了两种基本通信模式,字节模式和消息模式。使用中,二者并无本职区别,更多还是由程序员自己选择和控制。在字节模式中,数据以一个连续的字节流的形式在客户机和服务器之间流动。而在消息模式中,客户机和服务器则通过一系列不连续的数据单位进行数据的收发,每次在管道上发出一条消息后,它必须作为一条完整的消息读取。

服务端创建管道流程

  • 创建命名管道:CreateNamedPipe
  • 等待客户端连接:ConnectNamedPipe (会阻塞,等待连接)
  • 读取数据:ReadFile、ReadFileEx
  • 写入数据:WriteFile、WriteFileEx
  • 关闭连接:DisconnectNamedPipe
  • 关闭管道:CloseHandle

客户端连接管道流程

  • 打开命名管道:CreateFile
  • 等待服务端响应:WaitNamedPipe(可选)
  • 切换管道为读模式:SetNamedPipeHandleState(这个API很重要,要和服务端模式匹配,否则会出现数据发送和接收问题)
  • 写入数据:WriteFile、WriteFileEx
  • 读取数据:ReadFile、ReadFileEx
  • 关闭管道:CloseHandle

需要注意的一点是,数据粘连,如果连续发送数据,可能多条消息被另一端同时读取,需要对读取到的数据做细致处理。

举报

相关推荐

0 条评论