2012-07-17 69 views
2

我使用的是HttpListener和HttpContexts,并且我知道在编写响应的时候可以确定它是否是正确发送的,但是如何告诉客户端是否收到呢?有没有一种方法可以确定客户端是否在.NET中接收到HTTP响应?

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

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

谢谢!

回答

2

“我想你可以在服务器和客户端之间建立一种消息确认系统”。恐怕你会到。 AFAIK在HTTP中没有“本地”确认方法。

1

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

ASP.NET不提供确保TCP缓冲区刷新的方法。即使这样做,也可能存在模糊的情况,其中客户端收到响应,但网络吞噬了确认。

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

在这一点上,你需要提供你的意图的细节,因为如我所说,没有完美的解决方案。

+0

这很有道理。我的意图是确保传输过程中丢失的消息被注意到,为此,我的计划是让客户端发送消息(带有ID),并让服务器响应。如果客户端认为服务器没有收到消息,则重新发送请求。如果服务器收到重复的请求,它会发送响应的缓存副本。 虽然,我想知道如何通过HTTP实现WCF ReliableSession。 – user1431695 2012-07-17 23:20:52

相关问题