Re[2]: Засылка файлов
От: Arthur-V  
Дата: 13.01.05 15:41
Оценка:
Урррааа!! )))))

У меня получилось, надесюь нижеприведенный код кому-нидь поможет.
Во-первых, дочитываем ReadClient то что осталось
Во-вторых, при отсылке контролируем приход HTTP/1.1 200 OK, это нужно чтобы
убедиться что все стадии по приему (см.выше) файла были пройдены.
В-третьих, нельзя тестироваться на локальном веб-сервиса, IIS почему-то не шлет 200 ОК

от так от %)

//---- скопируем то, что уже есть
   memcpy(buf,pECB->lpbData,pECB->cbAvailable);
   blen=pECB->cbAvailable;
   buf[blen]=0;
//---- если нужно дочитаем остаток файла
   while(blen<pECB->cbTotalBytes)
     {
      rcnt=(pECB->cbTotalBytes)-blen;
      //---- попытка чтения
      if(pECB->ReadClient(pECB->ConnID,buf+blen,&rcnt)==FALSE)
        {
         ExtLogger.Out("'%s': crashlogs: failed to read datastream (err %d)",ip,GetLastError());
         delete[] buf;
         return;
        }
      //---- увеличим счетчик на реально считанное кол-во байт
      blen+=rcnt;
      buf[blen]=0;
     }
//---- вот теперь проверим наличие баундера
   if((cp=strstr((char*)buf,"\r\n---4385ufgbart---"))==NULL)
     {
      ExtLogger.Out("'%s': crashlogs: invalid bound",ip);
      delete[] buf;
      return;
     }
   *cp=0;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.