Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [*nix] Неверно принимает gzip страницу 
V
    Опции темы
jhonyxakep
Дата 18.6.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: нет
Всего: 8



Здравствуйте, 
пишу программку, которая должна на чистых сокетах принимать запросы от браузера, отсылать на сервер, ответ передавать обратно браузеру(своего рода прокси). Само собой браузер запрашивает страницу в gzip формате, поэтому ответ от сервера приходит в gzipe.

Читаю данные из сокета, передаю их сразу в браузер, но браузер отображает это не понять как. Если смотреть в отладчике самого браузера, то такой бред приходит как раз от моей программки. Внутрь из сокета программа получает те-же данные, те где то при чтении с сокетов происходит перемешивание данных. 

Как это решить?

так принимаю и сразу отсылаю

Код


 char c[3];
 while(1)
 {
   memset(c,'\0',sizeof(c));
   n2 = recv(sockfd2, c, sizeof(c), 0);
   write(sock,c,strlen(c)); 
   cout <<c;

     if (n2 == 0) 
         break;   

  }



Добавлено через 12 минут и 17 секунд
Все, понял в чем промах, проблема с размерностью массива из-за strlen. правильно


Код

 char c[3];
 while(1)
 {
   memset(c,'\0',sizeof(c));
   n2 = recv(sockfd2, c, sizeof(c), 0);
   write(sock,c,sizeof(c)); 
   cout <<c;

     if (n2 == 0) 
         break;   

  }


Это сообщение отредактировал(а) jhonyxakep - 18.6.2012, 11:36
PM MAIL ICQ   Вверх
feodorv
Дата 18.6.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 10
Всего: 45



Цитата(jhonyxakep @  18.6.2012,  12:36 Найти цитируемый пост)
Все, понял в чем промах, проблема с размерностью массива из-за strlen. правильно

Да, из-за strlen, но и это не правильно smile 
А правильно:
Код



 char c[2*1024];
 while(1)
 {
   if( (n2 = recv(sockfd2, c, sizeof(c), 0)) < 0 )
   {
      // error
      break;
   }
   else if( n2 == 0 )
      break;

   write( sock, c, n2); 
   write( 1, c, n2);
  }


Именно:
Цитата(feodorv @  18.6.2012,  13:44 Найти цитируемый пост)
   write( sock, c, n2); 



Это сообщение отредактировал(а) feodorv - 18.6.2012, 12:49


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
jhonyxakep
Дата 18.6.2012, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: нет
Всего: 8



 smile да, я потом тоже заменил.

Код

   write( sock, c, n2); 
   write( 1, c, n2);


что? о0
PM MAIL ICQ   Вверх
feodorv
Дата 18.6.2012, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 10
Всего: 45



Цитата(jhonyxakep @  18.6.2012,  17:26 Найти цитируемый пост)
что?

А чо?)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
jhonyxakep
Дата 19.6.2012, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: нет
Всего: 8



Код

 write( 1, c, n2);


Моя бедная логика.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.