窗口 HTTP IO 完成端口

Posted

技术标签:

【中文标题】窗口 HTTP IO 完成端口【英文标题】:Window HTTP IO Completion port 【发布时间】:2013-09-12 05:24:17 【问题描述】:

我正在阅读与 Windows HTTP Server API 相关的 Windows 编程的 IO 完成端口文档。

所以在 HTTP Server API 中,我们有一个队列,它是对响应/请求的抽象。我们有队列的句柄来获取相关信息。

如果我要将 IO 完成端口与此相关联,这是否意味着我已使用队列作为句柄?这不会降低粒度吗?我不能将 IO 完成端口与每个请求关联,而不是与完整队列关联。

详细查询: 我们使用 windows http server api 中的请求队列注册特定 URL。所以队列上可能有很多请求。如何将 IO 完成端口与每个请求/响应关联,而不是与队列本身关联。

IO 完成: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363862(v=vs.85).aspx

队列文档: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364483(v=vs.85).aspx

接收请求: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364495(v=vs.85).aspx

【问题讨论】:

【参考方案1】:

想通了。

IO 端口与队列句柄相关联。底层请求和响应与 IO 端口无关。

重叠结构用于传递有关响应和请求的相关信息。

【讨论】:

以上是关于窗口 HTTP IO 完成端口的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟 关于WSASend 函数,IO完成端口模型

使用套接字时,哪些 IO 操作会导致完成数据包发送到完成端口?

IO 完成端口初始读取和双向数据

IO 完成端口:WSARecv() 是如何工作的?

使用 io 完成端口时,WriteFile 是不是会在完成时立即发布完成数据包

完成端口