![]() |
|
Модераторы: feodorv |
![]()
|
|
| insidex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
День добрый, возникла нестандартная (для меня) проблема при написание простого обозревателя сайтов, через HTTP. Использую стандартные функции send/recv и блокирующий сокет. Посылаю на HTTP-сервер запрос на выдачу http-документа.Дальше циклом recv считываю пришедшие данные, тут и начинаются проблемы. Если на участке от сервера до клиента пакеты не подвергались фрагментации,то все нормально - блоки данных приходит на приложение,где и обрабатываются. Но если пакет был фрагментирован, то в приложение приходят блоки той же длины, но в них присутствует "левая" информация,похожая на номер пакета (типа 16af)
В итоге получаются уже испорченные данные :( Подскажите, как можно исправить положение ? Спасибо. |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Показывай код.
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| insidex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
Вот собственно обтесанный кусок кода, кстати там еще на recv почему-то иногда приложение просто зависает (намертво) при контакте с некоторыми серверами (например yandex.ru) |
|||
|
||||
| insidex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
По поводу фрагментации или хз чего-то там... решилось только после отключения под корень Аутпоста
Осталась еще одна проблема, почему recv глобально зависает на некоторых сайтах ----------------- Вообщем все мои проблемы были с файрволлом, а не с winsocks, тему можно считать закрытой. Это сообщение отредактировал(а) insidex - 11.3.2007, 21:36 |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Ты выходишь из цикла, когда, либо произошла ошибка, либо сервер разорвал соединение. Сервер просто не разрывает соединение, поэтому программа и зависает на recv. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 1 Всего: 158 |
это размер страницы. аутпост начинает его показывать при включенной опции EnableGzipEncoding для страниц с включенной компрессией. |
||||
|
|||||
| insidex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
Спасибо всем!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |