Привет. По мере реализации проксика возникли такие вот вопросы Иногда, при приеме данных с сервера(сайт)(recv), функция recv как бы подвисает. Выход - это вызывать функцию в отдельном потоке и прибивать по таймауту.. Но! Подвисает она иногда на середине передачи, т.е. когда страница еще не полностью скачанна. Тут вопрос первый. Что делать? Может быть сервер от нас чего-то хочет, послать ему сообщенице какое-то или еще чего? Второе. Когда с сервера(сайта) полностью загружена страница и ретранслирована проксиком броузеру, в самом браузере прогрессбар по прежнему в активном состояни, как-будто еще что-то скачивается... Закрытие сокета ситуации не меняет. Только после закрытия приложения в статусбаре появляется надпись "готово". Тут вопрос второй. Как сообщить броузеру, что это все. Кина больше не будет (т.е. это был последний пакет. Больше можешь не ждать...)? И третий вопрос. Как узнать, что страница полностью загруженна? Прием осуществляется пакетами по 500h байт. Заранее всем спасибо, кто ответит. Что конструктивных ответов...
Если речь идёт о HTTP, то вроде бы как в RFC2616 об этом говорится. Сначала нужно прочитать заголовок ответа сервера по строкам. Потом читаем тело ответа, его длина: 1. В ответ на HEAD или если получен код состояния 1xx, 204, 304 - нет тела. 2. Transfer-Encoding: chunked - смотри кодирование по кускам. 3. Content-Length поле заголовка присутствует - оно определяет длину тела. 4. multipart/byteranges - если длина иным способом не определена - тяжёлый случай. 5. Сервер может закрыть соединение после того, как передаст тело. Поскольку ответ сервера состоит из строки состояния, полей заголовков и тела, то когда будет завершено чтение тела, можно сказать, что "страница" загружена.
2 nitrotoluol: чтоб сразу закрылся надо установить параметр у сокета SO_LINGER int set_linger(SOCKET &hSock,int val) { struct linger sLinger; sLinger.l_onoff=val; sLinger.l_linger=0; return (setsockopt(hSock,SOL_SOCKET,SO_LINGER,(const char *)&sLinger,sizeof(sLinger))); } перез закрытием (close_socket(hSock))вызывай set_linger(hSock,1); а вот самый отличный фак по сокетам тут все есть... http://tangentsoft.net/wskfaq/
khv_test Респектъ ! Все проблемы устранены По поводу сокс5 У кого-нить небольшие исходнички может есть на сях или на асме?
FreeManCPM , harley респект . Давно искал в сети такое .Да и не я один. Думал , вообще , только за деньги можно достать .