我有createst持久(保持活動)連接到服務器的WebRequest的,例如:爲什麼我會在webrequest中訪問endOfStream,如果它是持久(保持連接)連接?
webRequest.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
webRequest.ContentLength = byteArray.Length;
webRequest.Timeout = Timeout.Infinite;
webRequest.KeepAlive = true;
webRequest.ReadWriteTimeout = Timeout.Infinite;
//[System.Threading.Timeout]::Infinite
webRequest.UserAgent = "www.socialblazeapp.com";
Stream dataStream = webRequest.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
webResponse = (HttpWebResponse)webRequest.GetResponse();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
responseStream = new StreamReader(webResponse.GetResponseStream(), encode);
while(!responseStream.EndOfStream){ //do something}
我不知道爲什麼responseStream.EndOfStream一段時間後變爲真。我會假設因爲這是一個持久的連接,這個流永遠不會關閉?
任何想法爲什麼會發生這種情況?
這是有道理的,所以我們可以說我想保持一個連接打開到Web服務器幾個小時(與數據流整個時間),我將如何實現這一目標? – rksprst 2010-06-22 00:43:31
根據你在這裏的問題和其他答案,我認爲你誤解了流和連接持久性的概念。無論連接類型如何,HTTP都是請求/響應對話。你總會發出一個有限的請求,而服務器總會給你一個有限的響應,這意味着響應結束了。根據我的理解(如果我錯了,糾正我)基本上是一種具有單個響應流變量並且能夠反覆使用它的方法。你無法做到這一點。 – CodingGorilla 2010-06-22 01:06:20
我想要做的是連接到Twitter的流媒體API(http://dev.twitter.com/pages/streaming_api)在「連接」部分下,他們有文字表示你應該能夠做到這一點爲了通過HTTP連接到流API。 如果我無法通過HTTP保留響應流,那麼我不明白Twitter如何維持連接?或者,我又誤解了一些東西? – rksprst 2010-06-22 01:13:36