【发布时间】:2012-03-27 02:06:52
【问题描述】:
我第一次使用 $SUB 并遇到了这个问题。客户端和服务器都使用重叠操作,这是我遇到问题的具体情况。
客户
C1。连接到服务器。
C2。发送大于管道缓冲区的消息,并且缓冲区传递给服务器中的重叠读取操作。
C3。成功取消发送操作。
服务器
S1。创建并等待客户端。
S2。当客户端连接时,它会读取消息。
S21。因为消息不适合缓冲区(ERROR_MORE_DATA),所以它被部分读取。
在我看来,无法判断整个消息作为一个孤立的单元何时被取消。特别是,如果客户端取消发送操作,服务器不会收到整个消息,只是其中的一部分,并且随后的读取操作返回 ERROR_IO_PENDING(在我的情况下),这意味着没有要读取的数据并且读取操作已经被排队。我希望有某种方式告诉读者该消息已被取消,以便读者可以对其采取行动。
但是,相关文档分散在 MSDN 上,所以我可能会遗漏一些东西。如果有人能对此有所了解,我将不胜感激。谢谢。
【问题讨论】:
标签: c++ windows winapi named-pipes