나는 서버에 영구적 인 (킵 얼라이브) 연결을 createst 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 true가 될 이유가 궁금하네요 있습니다. 나는 이것이 지속적인 연결이기 때문에 스트림이 닫히지 않을 것이라고 생각했을 것이다.
왜 이런 생각입니까?
말이 맞습니다. 그래서 몇 시간 동안 웹 서버에 대한 연결을 유지하고 싶다고합시다. 데이터 스트리밍 전체 시간), 내가 어떻게 그것을 달성하겠습니까? – rksprst
여기에있는 질문과 다른 대답을 바탕으로 스트리밍 및 연결 지속성의 개념을 오해하고 있다고 생각합니다. 연결 유형에 관계없이 HTTP는 요청/응답 대화입니다. 당신은 항상 유한 한 요청을 발행 할 것이고, 서버는 항상 당신에게 유한 반응을 줄 것이다. 이것은 그 응답의 끝이 있음을 의미한다. 당신이 찾고있는 것은, 내가 이해할 때 (그리고 내가 틀렸다면 나에게 올바른) 기본적으로 단일 응답 스트림 변수를 가지고 반복적으로 사용할 수있는 방법입니다. 당신은 그렇게 할 수 없을 것입니다. – CodingGorilla
내가하려고하는 것은 Twitter의 스트리밍 API (http://dev.twitter.com/pages/streaming_api)에 연결하는 것입니다. "연결"섹션 아래에이 작업을 수행 할 수 있어야한다는 내용의 텍스트가 있습니다 HTTP를 통해 스트리밍 API에 연결합니다. HTTP를 통해 응답 스트림을 열어 둘 수 없다면 Twitter에서 연결을 유지하는 방법을 알 수 없습니까? 또는 나는 다시 뭔가를 오해하고 있는가? – rksprst