|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2012, 17:19 | #1 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Winsock , обрезает вывод
Возможно уже поднималась данная тема. Пишу прокси-тоннель через php гейт. Слушаю сокет на порту 3128 , получаю от браузера хэдер, разбираю его и по средствам idHTTP (изначально пробовал синапс и чистые сокеты) получаю строку типа string и отправляю ее обратно браузеру.
Возникает 2 проблемы. 1. Некоторые сайты не грузятся, грузится только присланный хэдер, а сам контент почему то не отображается, хотя в переменной S (сюда приходит ответ от гейта) все есть. 2. Вылетают invalid pointer value и AV , после того как ввел критические секции, вместо этой ошибки прога просто зависает. Видимо где то поток виснет и следующий поток уже не может добраться до кода, где происходило AV , так же в отладчике видно, что AV происходит в работе функции DeleteFree кусок кода, где я предполагаю ошибки: Код:
|
15.11.2012, 12:09 | #2 |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
Код:
Код:
На оновании чего ты уверен что все sizeof(Result) байт данных успешно отправлены ? |
15.11.2012, 13:43 | #3 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Цитата:
|
|
15.11.2012, 15:26 | #4 | ||
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
Цитата:
Следом за recv() ты начинаешь парсить контент запроса в расчете на то что он получен в объеме, достаточном для извлечения нужной тебе инф-ции. А на самом деле получен лишь фрагмент контента. Цитата:
|
||
15.11.2012, 21:09 | #5 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Цитата:
2. он должен передаться полностью, т.к. другие сайты в этом же объеме передаются нормально. а например 2ip.ru передается только хэдер, а именно сам контент отрезается. если убрать хэдер весь контент передается успешно, но в виде текста. |
|
15.11.2012, 22:54 | #6 | |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
по п.2 - полный бред.
Ок, спрошу иначе: Cчитаешь ли ты полными идиотами разработчиков из Майкрософт, которые опубликовали в официальной документации к ф-ции winsock.recv следующее: Цитата:
|
|
16.11.2012, 00:07 | #7 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Цитата:
Я проводил эксперемент, брал контент страницы ya.ru и 2ip.ru загонял их в текстовики и поочередно отправлял через send , тоже самое. п.с. я прекрасно понимаю, что считывать recv нужно до момента пока он не будет возвращать 0. Но я пытался отправить браузеру данные напрямую, чистым текстом. выходят вот такие дела. Последний раз редактировалось TreadProblem; 16.11.2012 в 03:05. |
|
16.11.2012, 12:40 | #8 | |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
Цитата:
Нет никакой гарантии что твой один-единственный recv()-вызов при иных сетевых условиях получит запрос от браузера целиком. И с send() та же песня - нет никакой гарантии что весь контент, требуемый к передаче, будет успешно отправлен за один-единственный вызов send(). На то тебе функция send() и возвращает результат, чтобы ты его анализировал с целью принятия дальнейшего решения, а не отправлял прямиком в мусор. И почему-то флаг FD_READ ты проверяешь select'ом перед чтением из сокета, а опросить FD_WRITE перед записью в сокет не удосуживаешься, полагаясь неизвестно на что. Последний раз редактировалось xoodoo; 16.11.2012 в 12:55. |
|
28.11.2012, 15:00 | #9 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
В архиве консольный мини прокси
Допили этот проект, проще некуда... или назови прокси сам допелю
Не стесняемся, плюсуем!
Последний раз редактировалось Slym; 28.11.2012 в 15:05. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проигрыватель KMPLAyer при уменьшении окна проигрывателя обрезает видео,как убрать? | kilogram | Операционные системы общие вопросы | 1 | 18.03.2012 02:36 |
Winsock | n3sh | C/C++ Сетевое программирование | 2 | 25.07.2010 17:55 |
при изменении разрешения картинки , BitBlt обрезает её.. | Человек_Борща | Общие вопросы Delphi | 2 | 29.04.2010 22:50 |
tomcat обрезает страницы | antoliy | Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) | 7 | 15.12.2009 12:29 |