2012-04-03 13 views
0

Ich habe eine httpwebrequest Verbindung zu einem Streaming-API nach dem Versuch ein tTCPClient erstellt, die nur nie am Ende funktionierte. Meine Sorge ist, ob mein Code korrekt ist und ich tatsächlich neue Daten einlese und dass die Verbindung aufrechterhalten wird. Anfangs hatte ich in einen Puffer gelesen und nach der maximalen Größe alles in eine Datei geladen, aber ich dachte, es wäre einfacher eine Zeile zu lesen, da jeder Eintrag durch Zeilenvorschübe abgegrenzt wurde.Stream-Verbindung mit httpwebrequest

Es sieht so aus, als ob ich kontinuierlich lese und nicht sicher bin, ob ich hier redundante Daten lese. Auch eine andere Frage ist, dass, wenn ich einen Thread zu appendToFile verwenden würde, würde das die Verbindung zum Strom aufrechterhalten?

+1

"Etwas scheint nicht richtig" ist keine Beschreibung eines Problems. – Kiril

+0

sieht der obige Code so aus, als ob er eine kontinuierliche Verbindung zu einem Stream herstellt – vbNewbie

+1

sieht die Ausgabe so aus? Sie sind derjenige, der Ihren Code ausführt. Erhalten Sie, was Sie erwarten? –

Antwort

1

Sie missbrauchen CanRead. Am besten schauen Sie sich die Dokumentation noch einmal an. CanRead sagt Ihnen nur, ob ein Stream CAPABLE des Lesens ist, nicht wenn er Daten enthält und daher niemals in einer Schleifenbedingung verwendet werden sollte.

Außerdem müssen Sie den Stream schließen, wenn Sie damit fertig sind.

+0

danke für deine antwort. Ich breche die Webanfrage ab, wenn die Schleife endet, und habe sie nun so geändert, dass sie ein Flag enthält, das basierend auf einer Zeitstempelverzögerung aktiviert wird. Aber meine Sorge ist, wie kann ich diesen Code ändern, um die Verbindung offen zu halten und alle Daten zu verbrauchen, die über diese Verbindung gesendet werden. – vbNewbie

+0

WebRequests sind nicht wirklich als dauerhafte ungebundene Streams gedacht. Sie sollen bewirken, dass die Verbindung die Anfrage sendet, die Antwort erhält und beendet wird. Sie sind auf etwas mehr wie ein NetworkStream. Werfen Sie auch einen Blick auf diese Frage http://stackoverflow.com/questions/3089382/why-do-i-get-to-the-endofstream-in-a-webrequest-if-it-is-persistent- keepaliv – JamieSee

+0

Vielen Dank für Ihre Antwort und das war alles was ich wollte war ein guter Rat. – vbNewbie