Hallo zusammen,
heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:
Ich schreibe eine Anwendung mit WinHTTP. WinHttpQueryDataAvailable() sagt mir dabei, wie viel Daten am Socket liegen. Das Problem ist, wenn ich danach versuche, mit WinHttpReadData die Daten auszulesen, bekomme ich deutlich mehr Daten zurück
als erwartet. So weiß ich nie, wie groß ich den Buffer machen muss.
Unsere Antwort bzw. unser Lösungsvorschlag darauf war:
Das beschriebene Verhalten ist normal. In der Zeit zwischen der Aufruf von WinHttpQueryDataAvailable() und WinHttpReadData() sind einfach neue Daten angekommen, deswegen ist der Anzahl der an dem Socket wartenden Daten größer.
Die Dokumentation für WinHttpQueryDataAvailable() sagt:
This function returns the number of bytes of data that are available to read immediately by a subsequent call to
WinHttpReadData. If no data is available and the end of the file has not been reached,
one of two things happens.
Mehr Informationen zum Thema findet man auf den folgenden Adressen in MSDN Online:
1. MSDN: WinHTTP Start Page
2. MSDN: WinHttpQueryDataAvailable-Function
3. MSDN: WinHttpReadData-Function
Viele Grüße,
Atanas Dimitrov
MSDN Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline:
http://www.msdn-online.de/Hotline

Es gelten für die MSDN Hotline und dieses Posting diese
Nutzungsbedingungen, Hinweise zu
Markenzeichen sowie die allgemein gültigen
Informationen zur Datensicherheit sowie die gesonderten
Nutzungsbedingungen für die MSDN Hotline.