W oparciu o:
The amount of data to be read for each call to InternetReadFile is specified by the dwNumberOfBytesToRead parameter and the data is returned in the lpBuffer parameter. A normal read retrieves the specified dwNumberOfBytesToRead for each call to InternetReadFile until the end of the file is reached. To ensure all data is retrieved, an application must continue to call the InternetReadFile function until the function returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.
Mamy taki kawałek kodu:
while(InternetReadFile(hRequest, ptr4, WielkoscPamieci-1, &dwBytesRead) != false)
{
ptr4 += dwBytesRead;
if (dwBytesRead == 0)
{
break;
}
}
ptr4 += dwBytesRead;
*ptr4 = '\0';
Z tymże robi mi się tu kaszana, bo niestety, czasem w dwBytesRead pojawia się 0, choć plik się jeszcze nie skończył!
Nie wiem z czego to wynika, czy z kiepskiego łącza może? Może przeciążenie serwera? Nie za każdym razem tak się dzieje.
Tak czy siak, tak być nie może. Sprawdziłam testowo, że jak wyrzucę tego break'a, to niby działa. Jednakże na forach wyczytałam, że ludzie mają odwrotny problem - brak breaka powoduje problemy przy pobieraniu (z resztą nie zgadza się to z tym, co jest napisane na msdnie). Nie chcę poprawiać kaszany na nową kaszanę. Czy wiecie może, jakie będzie na pewno dobre rozwiązanie?