2

我正在使用 HttpListener 和 HttpContexts,并且我知道在编写响应时您可以确定它是否正确发送,但是您如何判断客户端是否收到了它?

我想你可以在服务器和客户端之间建立某种消息确认系统,但我想知道是否有什么东西可以透明地为我做这件事。

使用 WCF 对类似问题的回答是指 ReliableSessions,但我不确定将 WCF 安装到我的应用程序中是否值得。我对 WCF 不是很熟悉,但在我看来,它不是针对传统的 Web 服务器请求/响应模型量身定制的,而是更适合分布式系统类型的东西(这更像是我通过查看文档获得的直觉可靠的会话,所以如果我错了,请纠正我)。

谢谢!

4

2 回答 2

2

“我想你可以在服务器和客户端之间建立某种消息确认系统”。恐怕你不得不这样做。AFAIK HTTP 中没有“本机”确认方法。

于 2012-07-17T23:01:22.490 回答
1

在服务器上,您可以调用 Response.Flush 它将所有当前缓冲的数据(和标头)同步发送到客户端。调用完成后,您知道数据已移交给 TCP 堆栈。

ASP.NET 不提供确保刷新 TCP 缓冲区的方法。即使它确实存在,也可能存在客户端收到响应但网络吞下确认的模棱两可的情况。

这是将军问题,无法解决。

此时,您需要提供有关您意图的详细信息,因为正如我所说,没有完美的解决方案。

于 2012-07-17T23:05:05.947 回答