![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Сириус,
внимательно посматрел на твой код.... ты совершаешь большую ошибку в обработке запросов... а точнее обработки запросов вообще нет! Браузер может слать твоюему серверу все что угодно! хоть http://127.0.0.1/djafipsfshcjsdcjsld/ и твой сервер выдаст ему страницу html! потому что ты не проверяешь запрос! Неважно что пришло - отошлите ему ХТМЛ код.... Потом при втором запросе - та же каша... неважно что пришло во втором запросе, отошлите ему то-то.... сделай так.... каждый приход запроса - это одна интерация цикла! дальше как только он пришел - анализ запроса дальше - формирование ответа и собственно его отсылаем и закрываем соеденение с клиентом... пока ты не скажешь клиенту что все передано соедениение закрываем... клиент будет дальше ждать данных... а в броузере будет зависший прогресс бар загрузки страницы.... |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Kipter благодарю за ответ. Проблема вот в чем..я не получаю запроса на картинку! А должен получать.
Я после того как пошлю ответ на запрос клиента, то есть отклик сервера, который будет состоять из HTML кода, должен получить от клиента (в данном случае браузера IE) ответный запрос на уже картинку. Я ее не получаю. А не обрабатываю запросы, чтоб все проще было..пока что у меня главная проблема, представь что я хочу 5 картинок выставить на хтмл страничке, как мне это сделать? Я просто не знаю как это делается!...Вот главная проблема. Читал RFC http но там про это нет ничего. Спрашивал каких-то специалистов тоже, они говорили что после того как была послана хтмл страничка, браузер на все теги img src будет поочередно слать запросы, (где как мне тут уже обьяснили, я буду отправлять уже ответы в виде картинок в бинарном виде, НО ТОКО в случае когда на картинку шел запрос). Вот..надеюсь проблема понятна. Вот так все сложно. На самом деле вопрос не такой уж и легкий..а если я ему адрес кину типа 127.0.0.1/image.gif то он покажет, (то есть найдет на моем компе в текущей директории программы картинку image.gif и покажет ) Но это токо в случае локальном..а если из другого компа подключаться? То это погорит. Не важно, просто моя главная проблема в том что не знаю что слать клиенту и как слать клиенту, чтоб он мне ответный запрос на картинку выслал. Я должен этими запросами-откликами построить ХТМЛ страничку целую. Весь этот процесс..но мой клиент посылает токо один запрос обычный..(когда набираю http://127.0.0.1/ ) запрос на GET / - я теоретически должен ему слать страничку ХТМЛ и он уже должен колдовать мне запросы на картинки..по очереди, а я по очереди буду слать ему их в бинарном виде. Если ХТМЛ страничка состоит из картинок токо. Вот, но я пробовал слать и ХТМЛ код и все все..но не добиваюсь ответа следующего от клиента(уже на конкретный файл (в данном случае картинку) ).... :( |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Сириус, проверь в дополнительных настройках браузера, стоит ли галочка "отображать рисунки". На ум приходит только это объяснение.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
http://127.0.0.1/Picture.jpg
спасибо за ссылку отловил одну ошибку ![]() GremlinProg, пришел к такому выводу на втором сообщении в этой теме ![]() Это сообщение отредактировал(а) Vaulter - 3.5.2007, 21:35 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Vaulter, ну может сейчас проверит )
ужас, в этой теме слишком много слов, наверное, все таки стоит делить большие монологи на абзацы, а то складывается впечатление, что у авторов такое же настроение, как и их сообщения: длинные и монотонные... -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Это не проще... это наоборот сложнее выходит =) Во первых при обработке можно легко понять а приходит что то или нет.. с выводом всего этого на экран Во вторых а понадобится тебе 6 картинок... или еще и CSS таблицу подгрузить... и что перелапачивать код и поочередность принятия или отдачи пакетов? В третьих, броузер может скешировать 1 картинку так как он ее знает и запросит сразу вторую на что получит совершенно не ту =) Сделай всетаки обработчик запросов. Видимо всетаки броузер грузит эту картинку не с твоего серверного приложения, а грузит ее по локальному пути... твоего компьютера... Покажи код где твое серверное приложение отправляет картинку.... |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
GremlinProg проверил, в настройках все ок. (Отображение картинки есть)
Vaulter какую ошибку отловил? Kipter вот
Вот тут я отправил две картинки (через пути локальные) и они нормально отображаются на страничке (но этот вариант, как все уже говорили, не будет работать если с другого компа подключаться на мой сервер), а 3-ую по ссылке 'http://127.0.0.1/links.jpg' и она не отображается (на страничке токо крестик, как бывает когда картинка не грузится) . Картинка links у меня в директории debug-а, так что все правильно..я думаю тут я должен был получить запрос на картинку, после чего я должен был послать ее в бинарном виде, но ее(запроса на картинку) нет. В коде я ставил recv, (сейчас их убрал кроме первой) никаких запросов не приходило. Короче первые две картинки показывает, но метод не тот, а 3-ю не показывает вообще. "Во первых при обработке можно легко понять а приходит что то или нет.. с выводом всего этого на экран Во вторых а понадобится тебе 6 картинок... или еще и CSS таблицу подгрузить... и что перелапачивать код и поочередность принятия или отдачи пакетов? В третьих, броузер может скешировать 1 картинку так как он ее знает и запросит сразу вторую на что получит совершенно не ту =)" Ты совершенно прав, это я понимаю.. надо запросы обрабатывать, но пока я их через debug отлавливаю и могу так проверять..мне токо понять как этот диалог между сервером и клиентом правильно вести, чтобы отобразить всю страничку, а дальше я к нормальному виду все приведу. Пока что у меня всего один жалкий запрос...мне нужно самое главное понять, механизм работы, а так остальное уже не такая проблема. Это сообщение отредактировал(а) Сириус - 4.5.2007, 09:58 |
|||
|
||||
Сириус |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Господа, я смог сделать так чтоб пришел запрос на картинку! НО это похожа на очень сложную загадку (хотя решение ее будет думаю после того как его обьявят казаться весьма простым, как обычно). Вот как:
Ну вот вам и загадка непростая..(непростая раз уж никто не додумался) В чем смысл? Почему именно два раза нужно делать ret= send(sock, szSendBuff,strlen(szSendBuff),0); ret= send(sock, szSendBuff,strlen(szSendBuff),0); ? а не один раз...почему??? Давайте рассуждать, проблема думаю интересная. Причем еще один тонкий момент..если я перезагружу сервер (заново запущу) и на страничку кликну просто рефреш, то опять запроса на картинку не будет..надо заново открыть новую страничку и там написать адрес http://127.0.0.1 Но это еще так..не важно, не настоко важно как момент с двумя sendАМи!..Короче что вы об этом думаете? Это все сложнее чем я думал, а материалов подробный нет..в RFC по http ничего не говорится про надобность посылок двух запросов, вообще про сам механизм там весьма поверхностно, изучать исходники Apache ужасно сложно..единственный сайт который я нашел по инофрмации о серверах - это http://apachedev.ru/2006/03/05/the-apache-...glava-4-chast-1 , но если вы знаете какие-нибудь другие сайты которые могут быть мне полезны, то прошу киньте ссылки..(или сайты где есть примеры серверов, не таких огромных как Apache, чтоб можно было изучить быстрее..исходники серверов) и т.п. Это сообщение отредактировал(а) Сириус - 5.5.2007, 22:32 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Бред какой-то
![]() Почему не приходит запрос на картинку? В коде есть ссылка на нее. Клиент ведь должен ее попросить!!! Спустя два года ![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
REZiaMIX |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Обо всем по порядку.
Для начала , разбираться в тупую - долгое дело. Самое простое - поставить apache, сделать тот же сайт с картинкой и html и разбирать любым http сниффером. Теперь о деле: Клиент запрашивает страницу: "GET / ......." Тут сервер должен понять что запрашивают именно "/" , т.е. рут сайта. Сервер соответственно выдает клиенту(браузеру):
У клиента соответственно грузится страничка иии... , надо ведь картинку загрузить! Клиент делаеть запрос: "GET /ababa.jpg ......." Сервер понимает что надо выдать картинку(но выдать может что хочешь) и выдает: "Content-type: image/jpeg ..... содержимое". Но по факту , заголовки можно вообще не выдавать(забить на стандарты, чтобы лишний код не писать) , а выдавать сразу же бинарное содержимое файла. В итоге самый легкий план для обучения таков: Сервер: ожидание соединения Клиент: подключение , шлем get ... Сервер: принимаем данные , парсим запрос Если запрос "/" тогда выдаем "<html><img src = "ababa.jpg"></html>"(сбрасываем соединение) , гоу ту пункт 1 Если запрос "/ababa.jpg" Считываем любым путем нужный файл(по факту это может быть и не jpg)
Добавлено @ 05:18 Вот код из моего давнего проекта, что то типа веб-интерфейса к проге. Получала аргументы простые через GET, сложные через POST
data , rcv - особые командные буфферы , но смысл понятен. После этого в data - результат парсинга POST или в rcv - результат парсинга GET data_type - тип запроса; Далее соответственно проверка , что же за команды нам пришли и соответственно выдача того что надо. Можно выдать прямо сразу бинарными данными jpg - фаерфокс прекрасно понимал))) Добавлено через 14 минут и 25 секунд
Вот ты некромант , я ведь не посмотрел даж на дату !) Писал мучался... ну ладно может кто через поиск найдет. Это сообщение отредактировал(а) REZiaMIX - 5.7.2009, 05:19 -------------------- ![]() |
||||||||
|
|||||||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
TheDestroyer |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Скорее всего потому, что клиент - браузер IE. А он постоянно все кэширует. Надо тестить либо в ФФ, где нет кэширования такого, либо слать браузеру типа:
В свое время намучался с непонятным отсутствием запроса к веб серверу. |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
Fiddler возьмите и смотрите что делает IE -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |