2012-04-03 5 views
0

작동하지 않는 tTCPClient를 시도한 후 스트리밍 API에 대한 httpwebrequest 연결을 만들었습니다. 내 관심사는 내 코드가 올바른지, 실제로 새로운 데이터를 읽고 연결이 유지되는지 여부입니다. 처음에는 버퍼를 읽고 최대 크기 이후에 파일에 모든 것을로드했지만 각 항목은 줄 바꿈으로 구분되어 전송되므로 줄을 읽는 것이 더 간단 할 것이라고 생각했습니다.httpwebrequest를 사용하는 스트림 연결

rStream = webrequest.GetResponse().GetResponseStream 
rStream = New GZipStream(rStream, CompressionMode.Decompress) 
If rStream.CanRead then 
    Dim bufferPit(8100) as byte 
    Do 
     Dim dStream as StreamReader = New StreamReader(rStream) 
     While not dStream.EndOfStream 
      rData = dStream.ReadLine() 
      pTools.appendToFile(rData) 
     End While 
    .....//some other exception handling 
    Loop While rStream.CanRead 

여기서는 중복 된 데이터를 계속 읽는 지 계속해서 읽고있는 것으로 보입니다. 또한 또 다른 질문은 appendToFile 스레드를 사용한다면 스트림에 대한 연결을 유지할 수 있다는 것입니다.

+1

"이상한 것 같지 않음"은 문제에 대한 설명이 아닙니다. – Kiril

+0

위의 코드는 스트림에 대한 지속적인 연결을 수행하는 것처럼 보입니다. – vbNewbie

+1

출력이 그 것처럼 보이나요 ?? 당신은 당신의 코드를 실행하는 사람입니다. 당신이 기대하는 것을 얻고 있습니까? 귀하의 회신에 감사드립니다. –

답변

1

CanRead을 오용하고 있습니다. 가장 좋은 문서를 다시보십시오. CanRead는 스트림에 데이터가 있고 루프 상태에서 절대로 사용해서는 안되는 스트림이 읽을 수 있는지 여부를 알려줍니다.

또한 스트림을 끝내야 스트림을 닫아야합니다.

+0

. 루프가 끝나면 이제 웹 요청을 중단하고 타임 스탬프 지연을 기준으로 활성화 된 플래그를 포함하도록 변경했습니다. 하지만 내 관심은이 코드를 변경하여 연결을 유지하고이 연결을 통해 전송되는 모든 데이터를 소비하는 것입니다. – vbNewbie

+0

WebRequest는 실제로 영구적 인 제한되지 않은 스트림을 의도하지 않습니다. 그들은 연결이 요청을 보내고, 응답을 얻고 종료되도록하기위한 것입니다. 당신은 NetworkStream과 같은 것을 추구합니다. 또한,이 질문 좀 봐 http://stackoverflow.com/questions/3089382/why-do-i-get-to-the-endofstream-in-a-webrequest-if-it-is-a-persistent- keepaliv – JamieSee

+0

답변 해 주셔서 감사 드리며 제가 원했던 모든 것이 좋은 조언이었습니다. – vbNewbie