2012-07-17 73 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

相關問題