理解邮件时的困惑

时间:2014-04-26 05:33:24

标签: winapi visual-c++ inter-process-communicat mailslot

此快照来自Windows System Programming (4th Edition)

我对邮件的问题很少,

  1. 为什么mailslot被称为单向?虽然可以有多个客户端/服务器
  2. 为什么mailslot的作者被称为客户端而读者是服务器
  3. 如果没有读者,为什么开放会失败?我是否有可能会写,并且没有服务器可以阅读或者可能在一段时间后阅读?
  4. 我努力在Google上搜索,但没有得到确切的答案。

    enter image description here

1 个答案:

答案 0 :(得分:4)

  

1.为什么邮件被称为一个方向?虽然可以有多个客户端/服务器

它确实是单向的。创建邮件槽的过程只能从中读取,而不能写入它。打开邮件槽的过程只能写入它,而不能从中读取。邮件槽不像命名管道或套接字,数据可以通过单个连接在两个方向上流动。如果创建邮件槽的进程想要发送回复,则必须写入不同的邮件槽或其他IPC机制。

  

2.为什么mailslot的作者被称为客户端而读者是服务器

大多数IPC机制都有客户端/服务器模型。 “服务器”创建“客户端”随后访问的资源。邮件符合该描述,因为读者必须在编写者可以写入之前创建邮件槽。

  

3.如果没有读者,为什么开放会失败?是不是我可以写,没有服务器会读取或者可能在一段时间后读取?

如果没有读者,则邮件不存在。读者必须先创建邮件槽,然后编写者才能写入邮件槽。当所有读者都关闭了邮件槽的句柄(或以其他方式终止)时,邮件槽不再存在,不能再写入。