Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.174.253] |
|
Сообщ.
#1
,
|
|
|
камрады, в каких то исключительных ситуациях. примерно раз в 10-15 пакетов InternetReadFile читает 20 байт с сервера вместо отосланных сервером 21
for(;;) { numberOfBytesRead = 0; if( ::InternetReadFile( hFile, &receiveBuffer[ numberOfBytesReading ], needBytesRead, &numberOfBytesRead ) ) { if( numberOfBytesRead > 0 ) { numberOfBytesReading += numberOfBytesRead; needBytesRead -= numberOfBytesRead; if( 0 == needBytesRead ) break; else { LogInfo( "read next" ); } } else break; } else { LogInfo( "InternetReadFile FAILED" ); break; } } GetLastError молчит как зоя космеденьянская на допросе в гестапо выяснил следующее - в первом цикле читает 20 байт, уходит на второй круг дочитать 1 байт, читает 0 и выходит из цикла чтения. если не выпускать - то вечно висит в цикле. по логам апача на сервере - тот корректно заслал положенные 21 байт в пакете. как лечить и вообще куда копать? |
Сообщ.
#2
,
|
|
|
на стороне сервера в апаче подправил модуль отсылки пакетов шоб кратно 4м байтам было - косяк с недочитанным байтом пропал в клиенте. или затаился.... хз.
|
Сообщ.
#3
,
|
|
|
Поскольку InternetReadFile создает в кеше файл с прочитанными же данными (в папке кеша IE), то можно посмотреть там: реально ли все получил?
|